Hey, welcome to draft Academy. My name is
Mike in this course, I'm going to be teaching you guys everything you need to know to get
started writing c++, c++ is one of the most popular programming languages around. And
for good reason. It's an awesome programming language, it's actually a language that is
closely related to the C programming language. In fact, c++ is essentially just like the
next level of the C programming language. So if you're already familiar with the C programming
language, then you're gonna have no problem picking up c++. But even if you're not c++
is a great first programming language to learn. And in this course, I'm going to teach you
guys all of the core concepts. For c++, we're gonna start off just with the basics, we're
going to, you know, get everything set up, we'll install c++, we'll get you guys set
up with a text editor, and I'll show you guys how to write your first program, then we're
going to get a little bit more advanced. So we'll start looking at things like variables.
And we'll work with data, we'll even write a couple of different programs and some little
games. And then we're really going to get into the thick of it, we're going to learn
all sorts of different programming structures, things like loops, and if statements and classes
and objects, it's going to be awesome, we're going to cover all of the core concepts, not
just in c++, but all the core concepts for programming in general. So the knowledge you
learn in this course will actually be able to carry over to potentially other programming
languages as well. I'm really excited to be able to bring you guys tutorials on c++, it's
an awesome language, it's super fun to develop in. And it's a good first language to learn
if you're just getting into programming. So stick around for this course, you can kind
of work through the videos at your own pace. And hopefully you guys can learn something
about this awesome language c++. In this tutorial, I'm going to show you guys how to get everything
set up to start working with c++. So in order to start working with c++, and started writing
programs, and doing all that fun stuff, we actually have to do a little bit of setup,
we're actually going to need two things on our computer. The first thing we're going
to need is a text editor. And we're basically just going to use this text editor in order
to write our c++ programs, any text editor is going to work. Generally you don't want
to use a text editor like Microsoft Word or Google Docs, you're gonna want to use just
like a basic text editor, it could be something like Notepad, I'm going to show you guys a
special text editor called an ID, which stands for integrated development environment. And
we can use that text editor. It's basically just a an environment that's really awesome
for writing c++ code. And then we're also going to need in addition to a text editor,
we're going to need a program called a compiler, specifically a c++ compiler. And this is a
program that will basically take the c++ code that we write, and it will translate it or
transform it into a language that the computer is going to be able to understand. So as long
as we have a text editor, and we have our c++ compiler, then we're ready to start programming
in c++. So I'm going to show you guys how to get all that set up. First thing we're
gonna do is head over to our browser, and I'm over here on this website called codeblocks.
It's just www.codeblocks.org. And code blocks is what's called an ID. So it's an integrated
development environment, it's essentially just a special environment, special text editor
that can be used to write a c++ code. So this is going to be exactly what we need. I'm just
gonna click downloads over here. And you'll see there's a few options one says download
the binary release, download the source code, we're going to click download the binary release.
And this is going to bring us to this page, you can see there's a link over here for Windows
XP, Vista, seven, eight, etc. There's also links for Linux and Mac, let's click on this
windows option. And over here, you'll see there's a bunch of these different options.
So what we're gonna do is we're going to download this one over here that says codeblocks 1601
min GW setup. And actually, what's cool about this is it's going to include not only the
codeblocks text editor, but this is also going to include that c++ compiler that I was talking
about. So we can download both of those things in this one download for code blocks. So this
is the easiest way to do this as a beginner. So let's go ahead and download this, I'm just
going to come over here and click on this link for SourceForge. And this should start
downloading the file onto our computer. When codeblocks has finished downloading, let's
go ahead and open that up. So I'm just going to head over to my downloads folder. And we
can open that guy up. You can see over here it says codeblocks 1601 m i n GW setup. Let's
open this, and this should open up into an installer window. So let's click through this
installer window, and we can just select all the default options. And they should start
installing code blocks on our computer. So once code blocks has finished downloading,
then we have everything we need on our computer to start writing in c++. And you can see over
here I just opened up code blocks and the next tutorial we're going to talk about how
to set up your first code blocks project and get started writing c++. In this tutorial,
I'm going to show you guys how to get everything set up. To start working with and start writing
programs in c++, in order to set this up, we're actually going to need two different
things. The first thing we're going to need is a text editor where we can write our c++
programs. And really, for c++, you can use any text editor that you want. So a lot of
people might use like something like TextEdit, or maybe a different text editor. In our case,
we're going to be using something called an ID, which stands for integrated development
environment. And there's an ID, which is called codeblocks. That is specially designed for
writing c++ program. So I'm gonna show you guys how to download that, we're also going
to need one more thing, which is going to be a c++ compiler. And basically, this is
just a program that takes our c++ code that we write, and it translates it into a language
that the computer can understand. So when we want to run our programs, we want to, you
know, execute the programs with the computer, we can use this compiler to translate the
c++ that we write into computer code. So the first thing I want to do is show you guys
how to get that compiler. And it's possible that if you're on Mac, you might already have
it. But we want to do is go up here to this search bar. And we're just going to type in
Terminal. And we're going to click Enter. And this should open up the terminal. This
is basically just a window or a program that we can use to interact with the computer using
text commands. So down here, we want to check to see if we already have the c++ compiler
installed. So you just want to type in GCC hyphen, V. And just click enter. If you have
GCC, which is the C compiler we're going to be using installed and all this stuff should
come up with like a version number and, and everything. If this doesn't come up. In other
words, if you know it says that you don't have it, all you need to do to get this is
just say Xcode, select hyphen, hyphen, install, and this is going to go off and install everything
that we need for c++. So I'm just gonna click Enter. And I already have these installed.
So these are like command line tools, you can see I already have them installed. But
if you don't already have them installed, then this will basically just prompt you to
install them. Once that installer is done running, then you can just check to make sure
that you got GCC. So you can just say GCC hyphen, V. And make sure that you have it.
So once we have this c++ compiler installed, and we've run this Xcode, select Install command.
Now what we want to do is get a text editor. So like I said, we're going to be using a
special text editor called codeblocks. But really, you can use any text editor that you
want. So I'm going to go down here into my browser, and I'm over here on this website
codeblocks.org. And this is the website where we can download this program code blocks,
I'm just gonna click downloads. And over here, there's a couple options, you want to click
on the option that says download the binary release. So I'm going to click this. And you'll
see there's this little like list here, just click on Mac OSX. And this will bring us down
here. So it's basically just a zip file that contains the codeblocks application. Over
here, we can download it from SourceForge, I'm just gonna click this. And this should
redirect us to SourceForge and download the file for us. When codeblocks is done downloading,
I'm just going to go over to my downloads folder, and we'll see what we got. So we just
got the zip folder, I'm just going to double click it. And you'll see over here we get
the code blocks application. So what you should do is take this and drag it over to your Applications
folder. That way OSX knows that this is an application we want to use, then you have
everything that you need to start writing c++. So in the next tutorial, we're going
to set up a project in code blocks, we're going to set up our first c++ file, and then
we're going to run it and we'll just get everything set up and ready to go. In this tutorial,
I'm gonna show you guys how to get your first c++ project up and running in code blocks.
So over here, I just opened up code blocks. And this is sort of like the welcome screen
that we get when we first open it. And see over here, there's a couple options. One says
Create new projects. And that's actually what we're going to do. So before we're gonna start
writing our c++, I'm just gonna show you guys how to get a c++ project up and running and
ready to go in code blocks. So let's click Create new project. And this should open up
this little window over here. So you'll see there's all these different options. And these
are essentially just different types of c++ applications that we can create. We're going
to just do the bare basics. So you want to come over here and click console application.
And then just click Go. And we're just going to click Next. And over here, you'll see we
can select between a couple different languages, we want to click c plus plus. So I'm going
to click Next. And we're just going to give this project a title. So I'm just going to
call it draft. And you'll see down here I'm storing it inside of my desktop if you want
to change it, you can come over here and you can put it wherever you want. Let's click
Next. And you'll see over here we just have a bunch of options. You can just leave these
as the Default, and we're going to click Finish. Once we click finish, then our c++ projects
should have been created. So over here, in our little Tree Viewer, you'll see that we
have our c++ projects. And down here inside of the sources folder, we have this file main
dot cpp, and CPP is a file extension that stands for c++. So I'm just going to right
click this and I'm just going to open it. And you'll see over here we have a bunch of
code that's already been included in this file. So this is essentially just like the
most basic c++ file that you can write. I mean, this is what we call like a Hello World
program. So you'll see down here, it's just printing out hello world onto the screen.
And don't really worry too much about what this stuff up here is, really, let's just
focus on this line down here, this line is actually going to print something out for
us. So if I was to come over here, and I'm actually going to come up here in my editor,
and I'm going to click on this build and run option, when I click this, a window should
pop up. And it should basically just say, like, Hello World, you'll see down here, this
little black window popped up and it says hello world. So let's just go over some basic
terminology. Generally, whenever we're going to run a program in c++, we're going to build
the program. And then we're going to run the program. Building the program basically means
that we're taking all this code over here, and we're converting it down into a language
that the computer can understand. So the first thing we always have to do is build the file,
then what we want to do is run the file, which basically means we're telling our computer
to execute all of the instructions that we wrote in our program. And there's a bunch
of different ways we can do that here in code blocks, you can click this little cog wheel
up here, and that'll build your program. And then you can click this play button over here,
that's going to run your program. But a lot of times, if you just wrote some new code,
and you want to test it out, you can just click this build and run option. And for the
most part in this course, we're always just going to be whenever I say we're running the
program, I'm just going to click this button, and we'll build it and run it at the same
time. So like I said, this is a very basic c++ file. In next tutorial, we're going to
talk about like, what all this stuff is, we're going to look at writing some of our own instructions,
maybe modifying these instructions. And we'll kind of dive a little bit deeper into you
know, just sort of the bare basics. But for now, we have everything set up. So we have
our c++ project set up, we have our first c++ file called main dot cpp, and we're ready
to start programming. In this tutorial, I'm going to talk to you guys about the basics
of writing a c++ program, we're just going to talk generally about what programs are
and how we can write them. And we're going to write a little program, which is going
to print out a shape onto the screens, this is going to be pretty fun. Down here, I just
have this basic program. And when I first created my c++ project, in the last tutorial,
we sort of got this basic program. And this was kind of given to us. And this is, you
know, essentially just a very simple c++ program. So I'm going to walk you guys through essentially
what we have here, we're gonna talk about a couple different things, and then we'll
start writing some code. So up here, we have these two lines of code. This is like hashtag
include iostream. And this one says using named scape STD. Essentially, what this does
is it's kind of like configuration options for our c++ file. As a beginner, like, you
know, don't really worry too much about what this stuff is or what it's doing. We're going
to talk more about all this stuff later in the course. But for now, just know that you
need to have it there in order for us to write our programs. Down here we have this line,
it says int main. And there's an open and close parentheses. This is actually what's
called a function in c++, again, don't worry too much about what a function is, I'm just
kind of throwing out these words. So you kind of familiar with hearing them. But essentially,
what this is, is, it's a container for us to put the code inside of our c++ programs.
So this function called main is a very special function because any lines of code that we
put inside of here, in other words, any lines of code that we put in between these open
and closed curly brackets, is actually going to get executed when we run our program. So
down here, I just have this thing it says return zero. And again, don't worry too much
about what this is, just know that you need to have this in this main function. Over here,
though, we have an actual line of code. So this says c out. And then it says hello world,
then it says end L and this is a basic line of code in our program. So again, any lines
of code that we put in between these curly brackets for this main function is going to
get executed when we run our program. So if I was to come up here and run my program,
and I'm just going to click this build and run option right here, you'll see when the
program runs, it prints out hello world. And you'll see this little window that opened
up here. This is what we would call The console. And the console is basically just a little
window that will output information. So whenever we run our c++ code, this console window is
going to open up. And sometimes we can tell c++ that we want to print things out onto
this console window. So if you ever hear me referring to the console, I'm just referring
to this window right here. Now let's get down and start talking about programming. So again,
any of the code inside this main function is going to get executed. And here, we just
have one line of code. So what I can actually do is I can copy this and down below here,
I can say something else. So I could say just like my name, Mike. And now when I run this
program, you'll see it's going to print out both of these things. So here on the first
line, it prints out hello world. And then over here on the second line, it prints out
Mike. And this is just sort of like basically how we could print something out to the console.
You'll see over here it says c out and that stands for console out. And then over here,
you'll see we have this little line, it says end L and this stands for end line. And basically,
what this means is we're ending the line where we're going to print out text. So you'll notice
that we printed out hello world. And then on the next line, we printed out Mike. So
using these little print statements, I'm actually going to show you guys how we can write a
little program that's going to draw a shape out onto the screen. So I'm actually going
to go ahead and get rid of this text. And I'm just going to copy this guy here a couple
times. So we'll make like four of these. And I'm going to print out a triangle onto the
screen. So I'm just going to print a forward slash, and then we'll do a space and a forward
slash. And I'm just going to keep doing this. And you'll see we're kind of drawing this
little diagonal shape upwards. Now I'm going to use vertical bars, and we're going to go
all the way down. So I'm just going to keep going like this. And down here, why don't
we put some underscores, and then we'll put the last vertical bar, you'll see over here,
I'm actually writing out a bunch of instructions. And each of these instructions is telling
c++ that we want to print out a different line onto the console. So now when I run my
program, you'll see we're actually printing out this little triangle. This is a very basic
program. But you'll see just by using those four simple instructions, we were able to
actually draw something out onto the screen. So let's talk about this. Essentially, what's
happening when we click that run button is c++ is going and it's looking inside of our
program. And the first thing it's going to do is it's going to look for this main function
right here. So it's going to look for this block of code. And that's basically just what
a function is, it's going to look for this block of code called main and inside of these
open and closed curly brackets, it's going to execute all of the instructions inside
of there. And basically, when we're writing a program, all we're doing is we're just telling
the computer a bunch of instructions. So we're giving the computer a bunch of instructions
that we want it to carry out. So imagine that, for example, in real life, like you were using
a recipe or something, a recipe is a lot like a program, a recipe has a list of instructions.
And if you follow those instructions correctly, then you end up with like something delicious.
That's basically what a program is a program is just a collection of instructions that
we're giving to the computer. And we can give the computer simple instructions like this.
And we can do something simple, like draw out a shape. But as we go through this course,
and we learn more and more complex instructions, and we learn how to use them together in unison
with each other, we're going to be able to tell the computer to do a bunch of complex
things. So the next thing I want to talk to you guys about is the order that these instructions
get executed. So just like if you were following the recipe, and you would start with the first
instruction, and you'd go down to the last instruction, the computer is going to execute
these instructions in order. So it's going to start with this instruction. And basically
here we're just telling the computer over telling c++ that we want to print this line
of text out onto the screen. So c++ is going to do this. And then once it's done with that,
it's going to move on to this instruction, it's going to print this out to the screen
onto the screen, etc. It's going to keep doing that. So actually, let me show you guys if
I was to get rid of this line, and I was to put it up here. Now you'll see when we run
our program that we're going to print out a funky looking shape. So instead of this
base being down at the bottom here, we're going to print it out on the top. And that's
because we change the order of the instructions. So again, all a program is it's just a set
of instructions that we give to the computer. That's it, it's very simple, the more complex
instructions that we can give the computer and the more ways that we're able to combine
those instructions in different ways, the more complex Our programs are going to be.
So as we go through this course, I'm going to be teaching you guys all sorts of more
complex instructions. We're going to learn different ways to do different things and
will use real world examples to build little applications. And you'll end up learning a
bunch along the way. And this tutorial, I'm going to talk to you guys about using variables
in c++. A lot of times when we're writing programs in c++, we're going to be dealing
with all different types of data and information. And a lot of times when we're dealing with
that data and information, it can be kind of hard to keep track of. and a variable is
basically just a container where we can store different pieces of information or different
data values in our programs. And it makes it a lot easier for us to manage and maintain
and use that data. So I'm going to show you guys an example. And we'll show you guys basically
how variables are useful and how we can use them in c++. So down here, I have a very basic
program that I've written out, you'll see down here, I'm basically just printing out
a bunch of lines of text, it says, There once was a man named George, he was 70 years old,
he liked the name George, but did not like being 70. So this is basically like my little
story here. And you'll see I can run my program. And this is a valid program in c++, it basically
just prints out the story. And we have all of our information. So you know, this is a
pretty nice c++ program. It serves its purposes. But let's say that I'm looking at my story.
And I'm thinking, Hmm, maybe I want to change the character's name, right. So maybe I don't
like the name, George, maybe I want to change it to a different name. So what I could do
is I could go through and I can manually change it in each line of code. So I could come here
where it says George, and I could change it. Let's say we want to change the character's
name to john, right, so I can change it to john. I'll keep looking through the story
down here. It also says George, so I'll change it to john. And there we go. We've changed
the character's name, we've officially updated it. Let's say maybe now I'm thinking to myself,
I think I want to make the character a little bit younger, instead of 70. Why don't we make
john 35. So I can do the same thing, I can go in and manually change the value of 70
to 35. So we can come over here, and we can say he was 70, which changes to 35. And we'll
say did not like being 17. Okay, so we'll change that to 35 as well. So now we've officially
updated our store, we've changed the character's name, and we've changed the character's age.
Here's the problem though. In order to make those changes, I had to manually go through
and individually edit each one of the places where the characters name showed up or the
characters age showed up. And imagine that instead of having a story that was only four
lines long, I had a story that was like hundreds of lines. And we mentioned the character's
name hundreds of times, and we mentioned their age hundreds of times, well, all of a sudden,
it becomes a lot more difficult for me to manage those pieces of information. So it's
difficult for me to manage the character's name and the character's age. Right, if I
had a story that was hundreds of lines long, and we mentioned the character's name 100
times having to you know, go and modify and update that name would be a very tedious task,
because I'd have to go through and essentially just do it manually. This is where something
like variables come in. A lot of times in our programs, we're going to have different
pieces of information, different data values that we want to keep track of, and we want
to be able to manage. So what we can do is we can take those pieces of information, and
we can put them inside of containers called variables. And variable. Like I said, it's
just a container where we can store a piece of data. And we'll make it a lot easier for
us to use and manage that piece of data in our programs. So I'm gonna show you guys how
we could create a variable that can store the characters name and the character's age.
And you'll see why this can be useful in something like this. So over here, I'm going to create
a couple of variables. When we create a variable in c++, we actually have to tell c++ a couple
things. The first thing we have to tell c++ is what type of information we want to store
inside of the variable. Now, in the next video, I'm going to talk to you guys all about the
different types of data that we can use in c++. But for now, I'm just gonna show you
guys two types of data. The first type of data that we can store inside of a variable
is called a string. And that basically means it's a string of characters. So it's like
plain text. So this down here, where it's saying There once was a man named john, this
is a string, right? It's plain text in our program, a lot of times we're going to be
dealing with strings. So I'm going to create a string variable. In other words, I'm going
to create a container that can store a string value. So I'm just going to say string. And
that's the first thing that we have to tell c++. The next thing we have to do is give
this container give this variable a name. So what we want to do is give this a descriptive
name, which will basically tell us what is inside of the variable. So I'm just going
to call this character name just like that. And what I can do now is I can give this a
value so I could say character name is equal to and now we can type in the character's
name so I could say, john, just like that. Alright, so once we've created this character
name value variable now this value, john, this string value is now stored inside of
this character named variable. The next thing we're going to do is create another variable
to store the character's age. In addition to storing data in the form of a string, we
can also store numbers. Now age is a whole number. So what I can do is I can store it
inside of something called an integer. And an integer is basically just a whole number.
So I can just say int, and I can just call this character age. Now I want to show you
guys another thing that we can do. So up here, what we did is we said string character name,
and we set it equal to a value right away. But what I could also do is put a semicolon
here. And also I do want to point out, whenever we're writing lines of code in c++, every
time you finish writing a line of code, you want to put in this semi colon. I'm not sure
if I mentioned that in the last video. But the semicolon basically tells c that we're
done with that line of code. So this separates one line of code from another. So you need
to always make sure you put these semicolons. But with a variable, what I could do is I
could say int character name, I could do the same thing for string. And then I could go
on to a new line. And I could give this a value. So I could say like, character age
is equal to and now I'm just going to type in a number. So we said that john was going
to be equal to 35. And you'll notice when we use numbers, we don't have to surround
these with quotation marks, we just can type out the number. So now we have two variables,
and I showed you two different ways that we can create them. And what we can do is we
can use these variables inside of our story. And you'll see how this makes it a lot easier
for us to maintain this program. So what we want to do is we want to replace every instance
of the characters name and the characters age with the variable. So instead of just
printing out john here, I want to refer to this variable. And the way that we need to
do that is we basically need to include this variable. So over here, I'm printing out this
string of text, I'm printing out a bunch of plain text, right. But let's say instead of
just printing out john here as plain text, I want to instead print out the value that
was stored inside of the character name variable, what I can do is I can just get rid of john.
And I can say less than sign less than sign. And what this is basically going to tell c++
is that we want to take the value that we're going to type out here, so I'm just going
to type out character name. And it's basically telling c++ that we want to take this value,
and we want to insert it right here, inside of this line of text. So when I go ahead and
run my program, now, you'll see that we're still printing out there once was a man named
john. Except now I didn't actually type out john, all I did was include this variable
right here. And I basically just said that we want to put the variable right in there.
So that's how we can include a variable inside of one of these print statements. So over
here, I'm going to do the same thing. So I'm just going to say less than less than character
name. And now this is going to insert the character name. In other words, it's going
to insert the value stored inside of the character name variable. at this position, we can do
the same for the age. So over here, we have the characters age, I'm going to get rid of
that. And I'm going to say less than less than, and now, character age. And so the value
inside of the character age variable is going to get placed right in there. And we have
one more place where we have the characters age. So over here, I'm going to get rid of
this. And now this is going to be special. So you'll see over here, we want to insert
the value inside of the character age variable, right in between all of this text. So I want
to put it right here, what I can do is I can make two quotation marks. And essentially
what this is doing is it's saying this is going to be its own string of text. And this
is going to be its own string of text. And I can make to less than signs, I can type
out the character age variable. And then I'm going to make two more or less than signs.
And this is essentially just going to string all of these together. So it's gonna say,
print out this text, then print out the value inside of the character age variable, then
print out this text. So I've now replaced every instance of the characters age, and
every instance of the character's name with those variables. Let's run our program and
see what happens. Over here, you'll see we have the same exact story as we did before,
there was a man named john, he was 35 years old john 35. So without having to manually
do anything, we were able to include those values. And now what's cool about variables
is if I wanted to update the character's name, or update the character's age, all I have
to do is change it up here in one spot. So if I wanted to change the character's name
to Tom, and I wanted to make Tom let's say 50 years old, I only have to modify the values
that Getting stored in the variables in, they'll automatically update down in our story. So
now when I run my program, you'll see it's using the name Tom. And it's saying that he's
50 years old. So that's kind of an awesome way that we can use these variables. Another
cool thing that these variables allow us to do is modify the value. So let's say that
halfway through our story, I wanted to change the character's name. So halfway through,
I wanted to make the name be a different name, all I have to do is say, character name. And
I can actually assign this a different value. So I could give this the value of Mike. And
again, I'm going to need a semicolon here at the end of this line of code. And now you'll
see halfway through the story, the character's name is going to change. So it says There
once was a man named Tom. And down here, it's using the name, Mike. So not only was I able
to just use those variables to insert these values, but I can actually modify those variables
at different places in my program. So that's pretty awesome. Now, this is just sort of
like the bare basics of variables, variables are containers, they allow us to maintain
and keep track of the data and the values in our programs a lot better. And they also
give us the advantage of only having to assign a value once so I can assign a value once
up here. And then I can use it and refer to it in different places down here. I can also
modify those values in different places in my programs. So in this tutorial, we talked
about storing values as strings of text, and as integers, which are whole numbers. In the
next tutorial, I'm going to show you guys all of the different types of information
and the different types of variables that we can create in our programs. In this tutorial,
I want to talk to you guys about the different data types in c++. a data type basically just
means a type of data or a type of information that we can use and work with inside of our
c++ programs. So there's all different types of information, we can store like text, different
types of numbers, decimal numbers, true false values, all sorts of stuff. And I'm gonna
kind of walk you guys through what all of those are and how we can use them. So the
easiest way for me to demonstrate this is just going to be to create a bunch of different
variables. So any of the different types of data that we can work with in c++, we can
actually store inside of variables. So I'm just going to create a couple of different
variables and kind of show you guys exactly how this is going to work. So the first data
type I want to talk to you guys about is called a character. And a character basically allows
us to represent one single character. So the way we can create a character variable is
just by saying CH, ar. And now I want to give this a name. So let's just call it like grade
or something. And whenever we create a character, we're going to use these single quotation
marks. So I can store any like regular character that I would want inside of here. So you know,
essentially any character that you can think of, you could store in here, and then we're
going to include this semicolon. So that's basically like the character data type. And
in addition to just storing one single character, there's going to be a lot of situations where
we're going to want to store like more than one. And what we can actually do is use something
called a string. And a string is basically just a string of characters. So it's, instead
of just being one single character, it's like a bunch of different characters. So this would
be like, essentially just plain text that we would see in a program. So I could just
say string. And we could just call this like phrase. And when I create a string, I can
use these double quotation marks. So I can say, like, draft Academy or something. And
now we're going to be able to store instead of just one character, a bunch of different
characters. So there's different situations where you might want to use either like a
char or a string. But for the most part, I think strings are probably a little bit more
commonly used than chars. So instead of just plain text, we can also store and work with
numbers. So essentially, there's two different types of numbers are two basic types of numbers.
There's whole numbers, and then there's decimal numbers. Some people will also call those
floating point numbers, a whole number is like a counting number. So think like 12345,
right? There's just whole number of solid numbers, there's no decimal points, right?
Then we have decimal numbers, so it'd be like 0.5, or 1.267, or 10. Point 11. You know,
basically a number that has a decimal point after it. When we work with these different
numbers, c++ is actually going to distinguish between them. So the first type a number we
can work with is an integer. So I could just say int, and this could be like an age or
something. So whenever we're creating a number, we can just type out the number so I could
say like 15. And you'll notice I don't need any quotation marks. I don't need anything
special surrounding this, I can just type out the number. In addition to positive numbers.
You can also use negative numbers, but anytime we're using an integer, you can't have a decimal
points, he can't do anything with decimals, these are just going to be solid whole numbers.
If you want to work with a decimal, you have two basic options. So there's two data types
that represent decimals in our programs. The first is called float. And this basically
just stands for like floating point number. The second one is called double. Now you'll
hear different people talk about these different data types, the main difference is just how
many decimal points they can store. So a double can store more decimal points than a float.
So if you need a number to be very specific, as far as like how many decimal points you
can take it to, then you definitely want to use a double. And I would say for the most
part, as a beginner, just only worried about doubles, floats will be used more in specific
circumstances. But you know, as you're just learning this language, really just worry
about double. So we can just say double like GPA. And I can set this equal to like 4.5,
or like 2.3. Basically, I can make this any decimal number that I wanted. Keep in mind,
you could also do like 2.0. So it doesn't have to be like a different number decimal.
And again, you can make these negative, that's no problem. So ants are going to be what we're
going to use for whole numbers, for the most part doubles are going to be what we're going
to use for decimal numbers. So that covers text and numbers. And just with those two
data types. With text, we can use characters and strings and an instant doubles. You can
represent like just about any type of information in your programs. But c++ is awesome. So they're
actually going to give us another data type, which is called a Boolean. And a Boolean is
maybe not as intuitive as, like text and numbers. A Boolean is actually what we would call a
true false value. So when we're writing our programs, there's actually going to be a lot
of situations and circumstances where we want to represent true or false data. And a Boolean
is just a special word for true or false. Right. So I could say B o L stands for Boolean,
and we could create a variable like is male, right, so this variable is male is going to
store a true or a false value inside of it. And this will basically tell us whether or
not someone is male. So in my case, I could say true, because I am a male, right. So you'll
see how this can kind of come in handy for different things like, we could say something
is true, or we could say something is false. And that allows us to represent a certain
type of information, I could also say false over here. And that's going to be the opposite.
So these are going to come in handy a lot these true false values. And we can use Boolean
to represent them. So for the most part, these are the basic data types. Now there's a couple
other data types that we could also get into. But I think 99% of the time, as a beginner,
as somebody who's learning c++, you know, don't concern yourself with anything that
you don't have to so Boolean doubles, which are just decimal numbers, and which are whole
numbers, strings, which is plain text, and chars, which are just single characters. That's
what we're going to be working with. So as we go forward in the course, we're going to
be working with all this different type of information. Now, I want to point out one
more things, I'm actually just going to make a little print statement here. And you know,
this is the basic statement. So if I wanted to, I could print out any one of these variables,
like if I could print out a grade, for example. And this is going to go ahead and print that
out onto the screen. You see over here, we're just printing out a, but we don't have to
store this information inside a variable. So if I wanted, I could just type in a string
down here, right, I don't have to store in a variable. And this is what we would call
a constant. So I don't need to store it inside of a variable, I could also you know, type
out like false. Or I can type out a number like 4.5. Or I could type out an integer.
Or I could type out a character like, you don't have to put these things inside of variables,
a lot of times you can just use like straight up like that. And this is what we would call
a constant. But a lot of times you're going to want to store information in variables
because it's really useful. And obviously when you do that, you have to declare the
data type and you have to tell c++ what type of data you want to work with. In this tutorial,
I'm going to talk to you guys about the ins and outs of working with strings in c++. And
the c++ programming language, one of the most common types of data that you're going to
be working with are going to be strings and strings are basically just plain text. So
any type of plain text we want to represent or work with in our program is going to be
considered a string. So down here, you'll see I have this little program set up basically
just printing out a couple lines. So the way I can create a string is just by using an
open and closed quotation marks like this. So I can basically type out whatever I want.
If I wanted to, I could type out draft Academy. You'll see now I'm printing out draft Academy
and Hello. If I was to run my program, you'll see that we Drop Academy and Hello. First
thing I want to show you guys is doing has to do with this see our line of code over
here. So you'll notice here it says end l right here. And basically when we put end
l right there, it tells c++ that we want to print a new line after we print whatever is
in here. So if I was to get rid of this, and I just said, See our draft Academy. Now, what
you'll see is that Hello is going to get printed on the same line as draft Academy, because
we didn't put an L. So we didn't put a new line. If I wanted to, though, I could actually
manually come in here and specify a new line by saying a backslash n. So backslash n basically
means that we want to print out a new line. So this inside of a string represents the
new line character. So now when I run this program, you'll see that Hello gets printed
out on a new line. So that's how we can use that backslash n inside of our string in order
to do essentially the same thing as and L is doing. And if I wanted, I could put this
like in between these two words, and it would put them on a new line. So in addition to
just printing out a string, like we did over here, I could also store a string inside of
a variable. So in order to create a string variable, I can just say string, we'll give
it a name. So we could just call this phrase, and I could set it equal to whatever I want.
So let's set it equal to draft Academy. And then I can do exactly what I did down here.
So here, I can just print out phrase. And now it'll be printing out draft Academy onto
the screen, just like that. So in addition to just printing out strings, and kind of
working with them that way, storing them inside of variables, we can also use what's called
string functions. Now, a function is something that we're going to get into more later in
the course, we're going to write our own functions. But for now, just know that a function is
basically like a little block of code that we can call, which will perform a specific
task for us. So these functions do all sorts of things. And there's a lot of functions
that we can use with these strings. And they're called string functions. So these functions
will either like modify the string, or they'll give us information about the strings. So
I'm going to show you guys a couple. So the first string function that I want to show
you guys is the length function. And all I have to do to use this is I can just come
down here. And I'm actually just going to print out the result of using these functions.
So I'm going to put it down here, I'm going to say phrase dot length. And I can make an
open and close parentheses. And generally when we're calling a function and see, we're
going to use this dot, and then we're going to type the name of the function. So this
is the length function. And we're going to make an open and close parentheses like that.
So now if I was to run this program, you'll see we're getting 15. So this is basically
just telling us how many characters are inside of this phrase, strings, how many characters
are inside draft Academy. Now, if I wanted to, I could actually access individual characters
inside of here. So let's say that I wanted to access just this G. So I wanted to print
out the first character in this string, we can make an open and closed square brackets
just like this. And inside of here, I can put zero and zero is going to refer to this
first character in the string. So now when I run my program, you'll see we're just printing
out this capital G. If I wanted to access this R, for example, I could say two, and
two is going to refer to this R. So now when I run my program, we're printing out our as
you can see over here. So if you haven't caught on yet, whenever we're indexing a string,
we're starting at zero. So if I was to assign index positions to each one of these characters
in the string, I would say that g is an index position zero, I is an index position one,
R is an index position two, a three, four, etc. So whenever c++ is indexing a string,
it always starts indexing it at zero, so it'll start counting basically 01234. Even though
g is the first character in draf Academy, it's technically at index position zero. So
whenever we're using something like this, we're referring to like a specific character,
we want to refer to the index position, which is going to start at zero. Another thing I
could do is I could actually, like modify a specific character in a string. So I could
say like phrase, and I can refer to an individual character inside of this string. So we could
say like phrase zero, I could assign this a new value. So I can assign this the value
of a new character. So you'll notice I'm using these single quotes, so I could say like,
B. And so now, instead of saying, gee, Ira FFP, it's going to say, Be IRA FFV because
I'm essentially changing one of the characters in this string. So now when we print this
out, you'll see it says burapha Academy instead of draft Academy, so that can be kind of handy
just to modify a specific character inside of a string. We could also find out information
about this string. So I showed you guys how we can find out the length of the string But
imagine if we wanted to find out whether or not a specific string or a specific character
was inside of this string, I could say phrase dot find. And I can make an open and close
parentheses. And actually, inside of these open and close parentheses, I'm going to give
this find function a couple of different pieces of information. So I'm going to give it some
information for it to perform its task with. And these are called parameter. So anytime
I give a function, different pieces of information, we call it passing parameters. Or you also
hear people call them arguments. So passing arguments, or passing parameters, basically,
it's just information that we give to this function. So this fine function, I need to
give a couple pieces of information, the first thing I can do is give it a string or a character
that I wanted to find. So let's say I want it to find Academy. So basically, I want to
check to see if the word Academy is inside of this phrase string up here. The next argument,
I want to give this an X parameter is going to be an integer. And it's going to be the
index where I want to start looking. So if I wanted to just check to see if it was in
the string, I could say zero, if I wanted to check to see if Academy occurred after
the third index, then I could say three, let's just say zero. So now, this is actually going
to give us back in number and it'll tell me at what index position inside of this string
Academy occurs. So now I'm going to run my program, you'll see over here, it's giving
us an eight back. That's because academies starts at index position 012345678. So Academy
starts at index position eight. And that's why it gave that back to us. So I could do
this with anything I could say, like FFP, or something. And now this will tell me where
FF II starts inside of this string. So it starts at index position four. So that can
be pretty useful. And it's a really useful way to find the figure out of different things,
or different strings show up in this string you're working with. There's one more string
function that I want to show you guys, which is called substring. So it's just phrase.su.
b str. And this is also going to take two parameter. So we're going to give this two
pieces of information. The first piece of information we're going to give this is a
starting index. Now substring allows us to take, you know just part of this string, so
I could specify that I want to take like all the characters after this a or I can specify
that I wanted to take like, from index position zero from index position one all the way to
the end, basically, it'll allow me to take like just a subsection of this string. So
the first parameter, I want to give this as a starting index, so I could say like eight.
And so basically, this is going to start grabbing a new string at index position eight, then
I can give this a link. And this is basically going to tell substring, how many characters
I want to grab. So if I said like three, this is basically going to start at index position
eight. So it's going to start up here at this a, and it's going to grab three characters.
So it's going to grab this A, this c and this a. So now when I print this out, you'll see
we get a CA just like that. And that's basically what we do. So this is the starting index,
and this is the link. And one of the cool things we could do is we could actually take
this and store this substring in another string. So I could say like, string, phrase sub, just
like that. And then I could come down here and I could say phrase sub is equal to, and
then what we just had before, so phrase dot substring. And now if we print it out phrase
sub, it'll print out ACA. So I'm essentially storing the value of the substring in another
string. So that can be pretty useful. And that's really the basics of working with strings.
I mean, obviously, there's certain things that I left out, you know, I could spend an
hour just talking about all the different things we could do with strings. But I think
that kind of covers the basics kind of shows you all the basic things that you can do,
we looked at some basic functions, we talked about grabbing individual characters, we talked
about string indexes. So I think for now, that should be a good introduction into working
with strings in c++. In this tutorial, I want to talk to you guys about working with numbers
in C. Now whenever you're writing programs, and C, one of the most common types of data
that you're going to be dealing with are going to be numbers. So these can be things like
whole numbers or decimal numbers. Basically, I'm gonna give you guys a full overview of
how to work with numbers, we'll talk about the basics, we'll look at how we can use different
mathematical functions in order to do different mathematical operations with our numbers.
So this is gonna be a pretty cool tutorial. Now, down here, I'm just going to talk to
you guys about the basics. There's really two types of numbers and see that we deal
with whole numbers and decimal numbers. And whole numbers are basically referred to as
integers. And decimal numbers can be referred to as two things either floats or doubles.
And essentially, the only thing you need to know about that as a beginner is that doubles
allow you to store more specific decimal points. So the double you can store you know, potentially
more decimal points and you In a float, and there's more differences. But if you want
to get more into that you can kind of look it up. But the basics of using numbers as
you just type them out. So if I wanted to, for example, print out the number 14, you
see I have this C out here, I can just type it in and we can print it out, we can work
with it. In addition to positive numbers, we could use negative numbers, if I wanted,
I can make this a decimal. So really, numbers are very simple, you just kind of type out
the number. But we can also do things like math. So for example, I could say like five
plus seven. And in addition to printing out five and seven, this is actually going to
do this math operation. So this will actually print out the result of five plus seven. So
you can see we get 12 over here. So we can use addition, we can also use subtraction,
we could use division, which is going to be this forward slash, and we can use multiplication,
which is going to be this Asterix, so if I was to multiply these two numbers, now you'll
see over here we get 35. So those are the four basic math, you know operations. So that's
going to work really well. Also, one other thing I want to show you guys, which is called
the modulus operator, and the modulus operator will basically give us the remainder of dividing
two numbers. So if I said like 10, and then I made this percent sign, and actually this
is read 10 mod, and then I said three, so we would read this 10 mod three, what this
is going to do is it's going to take 10 divided by three, and then it's going to give us the
remainder, so this module is operator will give us the remainder, so 10 divided by three
is going to be three with a remainder of one. So now we just we should just get one. And
you can see over here we get one. So sometimes that modules operator can come in handy, you
can also represent order of operations in C. So C is going to adhere to like the normal
or reparations, like p DMS, I think it is Please Excuse My Dear Aunt Sally, basically
like multiplication and division are going to come before addition and subtraction. So
if I said for example, like four plus five times 10, this is going to do five times 10
first, so it's going to be 50 plus four, so we get 54. But if I wanted to do the addition,
first, I could just put parentheses around this. So now it's going to do five plus four,
nine times 10. So now we should get 90. And you can see we do so if you need to separate
order of operations. I mean, it's essentially just following basic math order of operations
rules. But you could represent those like that. So in addition to doing all that stuff,
and just printing out numbers, we can store numbers inside of variables. So I can make
an N, we'll just call it like w nom for whole number. And we'll just make this five. I could
also use like a double. And this will be like de nom for decimal number. And this would
be like 5.5, right? I mean, now we're storing these numbers inside of variables. If I wanted,
I could just, you know, print them out. Naturally, like we did down here, I want to show you
guys one cool thing we can do though, which is incrementing, a number that's stored in
a variable. So I could say like w num. And I could say plus plus. And what this is going
to do is it's going to add one on to W num. So now when we print out w num instead of
just being five, it's going to be six because we're adding one to it. So you can see we
get six. And that's a shorthand that'll come in handy a lot. There's a lot of situations
where you want to increment a value. You could also do like minus minus, and that will subtract
one from it. You could also do like w plus equals, and we could say like 80. And so what
this is going to do is it's going to take w nom and it's going to add 80 to it. So now
we should get 85. And you see we do, you can do plus equals multiplication equals minus
equals, I think you can do division equals, and all of that will it's just basically shorthand
so you don't have to type out all that stuff. So now that we kind of looked at all the different
operators, let's talk about how decimal numbers and integers work together. So here's a little
experiment. Let's say I came down here and I added 5.5 plus nine, so I'm adding a decimal
number. And I'm adding it to a integer number, right, so let's see what happens over here,
you'll see that we're going to get a decimal number back. So anytime we're doing math between
a decimal number like a double or a float, and an integer, a whole number, we're always
going to get a decimal number back. So it's always going to give us the decimal back.
But it's important to note though, if I did math with two integers, so for example, let
me show you guys if I was to say like 10 divided by three, and these are both integers. Keep
in mind, I'm actually going to get an integer number back. So we're going to get like three
back because that's technically the answer. But here's the thing. This isn't actually
the answer. Really what it is, is it's three with a remainder of one. But because we did
the math with two integers, we're going to get an integer value back. If I was to make
one of these a decimal number or even if I made both of them a decimal, a decimal number.
Now we're going to get back The actual like full answer. So it's going to be three with
three repeated just like that. So you can see if we do math between just two integers,
we're always getting an integer back, even if that's not like fully the correct answer.
And different circumstances, you're going to want to do that in other circumstances
you're not, but just keep that in mind. So that's kind of how integers and decimal numbers
interact with each other. So now what I want to do is show you guys how we can use different
math operations. So it generally just with math, there's all sorts of different, like,
I guess, operations, you can do like square root, you can take a number to a power, we
can round a number. And in C, there's actually these things called functions, which can do
all that stuff. For us. A function is basically just a collection of code that we can call
that will perform a specific task. And we're going to talk more about functions later.
But for now, I'm going to show you some basic math functions that we can use. In order to
use these math functions, I actually have to do something called importing them. And
essentially, when we import something, we're basically going we're telling c++ that we
need to go out and grab code from other files. So up here, you can see we're using this include
statement, and we're grabbing something called iostream, I'm going to add another line here,
we're just going to put a hashtag, we're basically just going to copy this guy up here. And we
can open and closed greater than less than sign. And in here, I just want to type in
C math. And basically, what this is going to do is it's going to tell our c++ program
that we want to use some math functions, that's kind of all you need to know at this point,
just know that you need to put this up here in order to follow along with what I'm going
to be doing. So down here, we can now use a bunch of different math functions, essentially
just math operations. So for example, I could say like POW. And what this will do is it'll
take two arguments. So in here, I could pass two numbers, like I could pass a two, and
I could pass a five. And what this will do is it'll take two raised to the power of five,
and it's just going to print that out. So when I run my program, you'll see we're getting
32. So 32 is two raised to the fifth power. And you can kind of do that with any number.
So I could also say like three raised to the third power, so three cubed, and now we should
get 27, which we do. So that POW function can be pretty useful. There's another one
square root Sq RT essentially doing the opposite. So we can say like square root 36. And now
this is going to give us the square root of 36 back, which is going to be six. So that
can be pretty useful. And inside of these functions, we you can put a decimal numbers
too. So I can put both integers like whole numbers and also decimal numbers. There's
another one which is called round, which is going to round a number. So if I put like
4.3 inside of here, this will return the rounded number. So you see, we just get four and this
will follow normal rounding rules. So if I change this to 4.6, now we should get five
back. There's a couple other these functions, which will similarly like round decimal numbers,
I can say CIO, and what this will do is it'll automatically just round the number up. So
even if this was like 4.1, this will round the number up to the next highest whole number.
So you'll see here we get five, you can do the opposite, which is floor. So if I just
say floor here, if I put a 4.8 in here, normally, it's supposed to round up, but now it's going
to round down because we're using that seal or that floor function. So those can be pretty
useful. And there's one more I want to show you guys, which is called f max. And f Max
is going to take two numbers. So I can pass in like a three and a 10. And this will tell
me which one's bigger. So this will return back to us the bigger of the two numbers.
So now when I run this program, you'll see it's giving us a 10 back because 10 was the
bigger number and a lot of circumstances, in C, you're going to have two numbers, you
might not know which one is bigger. So this can be really useful to tell us. And you could
also use f min, which will do the opposite. So this will tell us what the smallest number
that we passed in was. And you can see we get three over here. So those are some basic
math functions. There's a lot more if you just go online and search c++ math functions,
like you'll find a huge listing of all them that you can use. There's things to do like
sine, cosine, tangent, you can do like logarithmic stuff you can do, you can use like exponentials
all different stuff like that can be really useful. But that's kind of the basics of how
you can use that. And you know, really, numbers are extremely useful. And that's kind of been
like a broad overview of sort of all the stuff you can do with them. In this tutorial, I'm
gonna show you guys how to get input from a user in c++. A lot of times in our programs,
we're going to be working with all different types of information. But one of the most
important types of information is going to be information that the user inputs. So a
lot of times in our programs where Want to allow the user to input information. And then
we're going to want to use that information in order to do different things. So in this
tutorial, we'll just give a broad overview of how that's done, we'll talk about how to
get different types of information. And you know, you'll kind of learn everything you
need to learn. So down here, whenever we're getting information from the user, the first
thing we always want to do is store that information somewhere. So whenever I'm asking the user
to give me a piece of information, if they give me that information, and I don't put
it anywhere, like it's kind of useless, right, so we usually what we want to do is create
a variable. And I'm actually going to write a little program that will allow the user
to enter in their age. So I'm going to create a integer just called age. And I'm not going
to give it a value. So I'm just going to put a semicolon there, we're essentially declaring
the integer. So we're telling c++ that we want to use this integer, but we're not giving
it a value, we're going to let the user give this variable a value. The next thing I want
to do is I want to prompt the user to enter in something right. So if I don't give them
a prompt, if I don't tell them what information I want, then they're not going to know what
they should input. So I'm just going to say C out. And I'll just print out a little prompt,
so we'll just say, enter your age. And we're basically just prompting them to enter in
their age. Alright, so once we've created the variable, and once we've prompted them
to enter in the information, now what we can do is we can actually get the information
from them. So the way that we get information is actually the opposite of the way that we
print out information. So instead of saying c out, I'm just gonna say C n, and I'm gonna
make two greater than signs. So when we use C out, we use these lesson signs, when we
use C, and we use greater than signs, and that's really important. So over here, I'm
just going to type in the name of the variable that I want to store what they enter inside
of. So I'm just going to put age here, because I want to store whatever they input into this
age variable. So we're assuming that they're going to enter in an integer number, and I'm
going to store that integer number inside of this integer that we created. Now, what
we can do is we can just print out something. So we'll print out a little message to them,
basically saying like you are, and then we'll say like age, or we can say like, years. Old.
Cool. So now we're basically just asking them to enter in their name, we're taking whatever
they input, and we're storing it inside of this age variable, we can do that using the
C in command here. And then we're just printing out You are the age years old. So let's go
ahead and run our program. And we'll see how we did. So I'm going to build and run. And
you'll see here it says enter your age. So we can just put like 30. And now when I click
enter, it's going to take that integer that we entered in 30, it's going to store it inside
of the age variable, it's going to print out the prompt. So when I click enter, you'll
see it says you are 30 years old. So that's awesome. So we can do that and we can get
an integer, I could also get a double. So if I made this a double, it would be the same
thing. So here, I can run the program. And I can enter in like 4.5. So maybe someone's
like four and a half years old. And here they're entering in 4.5. So it's gonna work the same
exact way, you could also do the same thing for characters. So if I made this a sharp,
here, it'll be the same. So we'll be able to get a character from them as well. So now
when I run the program, I could just enter in like a G, for example, whatever, obviously,
that's not the age, but it does the same thing. So it's able to take in that character, and
it's able to use it. Now, here's the thing, that's how we can get characters in numbers.
But if we want to get a string of text, we're actually going to do something different.
So if I wanted to get a string, I'm actually not going to use this C in command. So I'm
gonna show you guys how we can get a string. So instead of entering in the age, why don't
we have them enter in their name. So over here, I'm going to make a string, and I'm
just going to call it name, instead of using C and I'm going to use another command, which
is called get line. And get line will basically allow us to get an entire line of text. So
instead of just getting like one number or one character, we're going to get like the
entire line that the user enters. And in here, we need to pass this a couple of different
parameters. The first is going to be c n. And c n is basically just that little like
command prompt. So like whenever we enter stuff into that command prompt, that's basically
what this is saying. And then we want to enter in the name of the variable where we want
to store the line of text that we get. So I'm just going to store inside of name. So
over here, we can just say hello to the user. So I could say hello. And it's going to be
name. So now we'll be able to get the name from the user. So we're basically get the
entire line. So for example, I can come over here I can say like john smith, and now when
I click enter, it says hello, john smith. So that's how we can get strings of text.
And that's really the difference is if I wanted to get like an integer and store it inside
of an integer variable, if I wanted to get a char and store it inside of a char variable,
I have to use C in. But if I want to just get like a string of text, then I can use
this get line function, and they're both going to be useful. So that's kind of an overview
of how we can get input from the user. And you can get as many values as you want. And
so you know, you can essentially like copy this whole line, paste it a bunch of times
below there, and get, you know a bunch of different pieces of information and use them.
In this tutorial, I'm going to show you guys how to build a basic calculator in c++. Essentially,
we're going to build a calculator where the user can enter in two numbers. And then we'll
add those numbers together and will spit out the answer. So this is going to be kind of
cool. And it'll show you guys a little bit more about getting input from users. So down
here, the first thing we want to do before we do anything is create two variables, where
we can store the two numbers that we want to add together. So I'm going to create an
integer. And I'm just going to call it num one. And I'm not going to give this a value
because we're actually going to let the user give this variable a value, I'm going to create
another one called num two. And same thing, actually, let me show you guys something cool,
we can do it, we're creating two variables like this. And they're the same data type,
I can actually put them on the same line. So I could say num, one, comma, num, two.
And a lot of people find this to be really useful. So for example, I could do like as
many as I wanted. In our case, we're just going to have two numbers, though. So now
that we've declared our two number variables, the next thing we want to do is prompt the
user and get some information. So I'm going to say C out. And the first thing we'll do
is prompt them for the first number. So I'll say enter first number. And now we want to
actually get the first number from the user. So I'm going to say cn, and over here, I'm
just going to specify num one. So we're going to store the number that they enter inside
of this num, one variable, I can actually just copy this. And we're going to do the
same thing down here. So I'm just going to say enter second number. And now instead of
num, one, it's going to be num two. So at this point in our program, we should have
both of those numbers, we should have gotten both of those numbers from the user, the last
thing we want to do is just print out the answer. So we can actually just say, C out.
And I'm just going to add number one and num two together. So we should be printing out
the result of adding those two numbers together. So let's go ahead and run this program. And
we'll see how we did. So I'm going to build and run. And actually Whoops, I put the wrong
direction for these arrows here. So this is probably a really common mistake with C and
we want to make to greater than signs not to less than signs. So that's something that
could easily trip up a new user. And it tripped me up. So when we're using C and we're using
these two greater than signs when we're using C out we're using these two less than sign.
So that's my mistake. But I guess that does kind of highlight a common mistake for beginners
in c++. And even for someone like me who's programmed in c++ a lot before. Alright, so
now let's run our program. And it says enter first number, so enter in a five, enter second
number entered and a 10. And now when I click enter, it should add both these numbers together.
So it does and we get 15. So that's pretty cool. Another thing we could do is instead
of using integers, we could also just use doubles. And that's as easy as just changing
these variable declarations. So now when we run the program, we can work with double.
So I could enter in like a four, I could also enter in like a 9.8. And now we'll be able
to add those guys together. So that's kind of cool. And really, that's a basic calculator.
So essentially, we're declaring the variables up here, we're using C out. And with C out
remember, we're using these less than signs, then we're using cn with the greater than
signs. And this line is basically getting the use the input from the user. And it's
storing it inside of this variable. We're doing that twice. And because we store these
as doubles or before integers, we're able to add them together and print out the answer.
So that is the basics of building a calculator. Actually, later in the course, I'm going to
show you guys how we can build an even cooler calculator that will be able to add, subtract,
multiply and divide, and the user will get to decide in order to build something like
that. We're gonna have to learn some more stuff. So stick around, and we'll learn how
to do something like that later in the course. In this tutorial, I'm gonna show you guys
how to build a little mad libs game in c++. So a Mad Libs is basically a little game where
you enter in a bunch of random words could be like nouns, verbs, adjectives, and then
all those words get taken and get sprinkled into a story. And generally since you entered
in random words, the story ends up being pretty funny. So let me show you guys over here in
my browser, I just have an example of a Madlib you know, essentially there's this story and
then you would sprinkle in all those random words that the person entered into the story.
So we're going to build something like this in our c++ program. Down here, I have my little
program set up. It's just this little poem, it says Roses are red, violets are blue. I
love you. So this is a, you know, sort of a classic poem. But I think this could be
a lot better if we turn it into a Madlib. So let's say instead of saying Roses are red,
why don't we let the user enter in a color, instead of saying violets are blue, we'll
let them enter in a plural noun. And instead of saying, I love you, let's say I love celebrity,
so some random celebrity they can enter in. So basically, we're going to ask the user
to enter in all these different values, we'll store them in variables, and then we can print
them out inside of our story. So let's get started, this should be kind of cool. The
first thing we want to do is actually create variables for all these things. So I'm just
going to say string. And we'll create a variable for the color for the plural noun and for
the celebrity. Alright, so now we've basically told c++ that we're going to use all these
variables, but we need to give them values. And we're actually going to let the user give
them values when they enter in all those things. The first thing we want to do when we want
to get input from the user is we're just gonna say C out and we're gonna print out a prompt,
so I'm basically just gonna say, enter a color. So we're gonna have them enter in a color,
now we want to actually get the color that they input, so I'm just going to say, Get
line. And in here, we're just gonna say ci, N. And that's basically just standing for
like that console input. So whenever we like, input text into the console, so it's gonna
get whatever gets inputted into there. And then we're gonna store it inside of this color
variable. So this will get the line of text that they enter. And I'm actually just going
to copy this, and we'll do the same thing for all the other values. So we're gonna say
enter a plural noun. And we'll store that inside of the plural noun variable. And then
down here, we're going to do the same thing for the celebrity. So we'll store that in
the celebrity variable. Alright, so we're declaring the very most, we're printing out
our prompts. And then we're getting the input from the user using this get line function.
Last thing we need to do is modify this part of the program. So instead of saying roses,
our color, we're actually going to put the color that they entered into the story, same
thing for this plural noun. So I'm just going to say, plural noun, and you can see how that
gets placed in between these lessons. And then I love celebrity, we're going to actually
put in the celebrity variable. Cool. Alright, so now our program should be set up, everything's
wired up, we're getting values into all these variables, and we're printing them out, down
here in our story. So let's run this program and we should be able to play our madlibs
enter a color, why don't we enter in magenta? Enter a plural noun, let's do microwaves.
And enter a celebrity. Why don't we do Tom Hanks. So now when I click enter, all of the
values are going to show up in our story. So it says roses are magenta, microwaves are
blue. I love Tom Hanks. Awesome. So our Madlib worked, and we are ready to go. So that's
essentially how you can build a Madlib I mean, it's it's as easy as getting different inputs
from the user and printing them out inside the story. But this is a very simple madlibs.
I mean, I'm sure you guys can see that you could ask the user for like 20 different words
and print them out into some huge long story. And it's going to work out the same way. So
this is an awesome way to create our Mad Libs game. In this tutorial, I want to talk to
you guys about using arrays in c++. A lot of times when we're writing programs in c++,
we're going to be dealing with large amounts of data. And one way that we can keep track
of and manage that data is by using something called a variable. But the one thing about
variables is that generally you can only store one value inside of a variable. So if I create
like a character valid variable, I can only store one character in there. If I create
an integer variable, I can only store one integer in there. A lot of times though, in
c++, we're gonna be dealing with huge amounts of data. And that's where arrays can come
in array is basically a container a lot like a variable. But unlike a variable arrays can
hold multiple data values. So an array could hold like a list of you know, 1000s, or millions
of pieces of information. And generally, we could put, you know, pieces of information
that are related to each other in some way inside of the same array. So I'm going to
show you guys how we can create arrays and how we can work with them. You create an array,
a lot like you create a normal variable. So the first thing we have to do is tell c++
of what type of data We want to store inside of the array. So I'm just gonna make an array
of integers. So I can just say int. And again, just like a variable, we're going to give
this a name. So I could say like lucky nums, right, and this would be an array of lucky
numbers. Now, here's where this gets different from a variable. When we're creating an array,
we always want to put an open and close square brackets after the name. So after lucky nums,
we're gonna put this open and close square bracket. And that basically tells c++, okay,
they want to create an array, so they want to be able to store multiple pieces of information
inside of this container. Now, I'm just going to say equals, and one, the easiest way to
create an array is just to assign it some default information right off the bat. And
I can just make an open and close curly bracket and inside of here, I can just start typing
out the information that I want to store. So let's say I want to store like a list of
numbers, I could say like for a 1516 2342, right, so I'm storing all of these numbers
inside of this single container. So unlike a variable where we can only store one number,
now I'm sorting a whole list of numbers. And we will refer to these as elements in the
list. So four would be the first element in the list. And then we would delineate the
next element using this comma. So now we have the second element, 815 16, excetera. So these
are all going to be elements inside of our array. Now down here, I'm going to show you
guys how we can access individual elements. So I'm just gonna say C out. And let's say
that I wanted to access one of these particular elements, let's say I wanted to access like
this first element here inside the array, because what good is the array, if we can't
access the information inside of it, right, I can just say, Lucky nums. And I can make
an open and close square bracket. Now inside of this open and close square bracket, I can
put the index of the element inside the array that I want to access. So if I want to access
this first element in the array, I just need to put an index in here, that's going to be
zero. So now when I run my program, you'll see we're printing out four, we're printing
out that first element in the array, if I wanted to get access to this 15, it's going
to be 012, it's going to be at index position two inside of this array. So now whenever
my program, we get that 15. So if you haven't caught on by now when we index these arrays,
we start with index positions zero. So I would say that four is an index position. 08 is
an index position. 115 is an expedition 216, three excetera. So we would always say that
the first element in the array is actually an index position zero. And if you're familiar
with how strings are indexed in c++, it's the same exact thing. So that's how we can
access an individual element in the array, we can also modify an element in the array.
So I can say like, Lucky nums. And like, let's say I wanted to change the first element,
I could say lucky num, zero, and I could give this a different value. So I could set this
equal to 19. For example, Now down here, when I print out lucky numbers, zero, I'm actually
going to be printing out and actually typo whoops, I'm actually going to be printing
out 19. So you can see we're able to modify one of the indexes inside of that array. Another
thing we can do with these arrays is I can give them a size. So normally, if I just create
the array like this, or just say, Lucky nums and an empty square brackets, the array is
only going to be able to store the elements that I declare over here. But a lot of times
when you're making these arrays, you might not know what all the elements should be.
So over here, I could put in a number like I could say, like 20. And essentially what
I'm doing here is I'm telling c++, that I want to be able to store 20 elements inside
of this lucky nums array. So over here, I don't have 20 elements, yet I only have elements
012345. So what I can actually do is I can add more elements into here. So I could say
like lucky numbers six or lucky numbers 10. And I could give this a value. So I could
give lucky numbers 10 the value of 100. And now down here, if we printed out lucky numbers
10 it's going to be printing out 100. As you can see, another thing you can do is just
not give this any info right up front so I can get rid of all of these. And I can just
put a semicolon here. And then down here, I can give all these different values. So
I can say lucky number zero is equal to 100. And now I can you know essentially just assign
all the elements after we declare it so like I said, a lot of times you might not know
exactly what's going to go in the array when you declare it and so you can just basically
tell, see how many items you want to hold in there and then you can just you know, fill
the the array up as you go. But that's really the basics of arrays and arrays are very simple.
So this is a very simple way To store multiple pieces of information. In this tutorial, I
want to talk to you guys about using functions in c++. A function is basically just a little
collection of code that performs a specific task. So a lot of times in c++, when you're
writing much code out, you have code that's designed to do a certain thing. So you might
have like four or five lines of code that's supposed to do something. And a function is
basically a container where you can put that code, and then you can reuse it throughout
your entire program. So I'm going to show you guys how we can create a function in this
tutorial. So down here in my program, you'll see I have this little block of code here,
it says int main, there's an open and closed parentheses. And then there's these open and
closed curly brackets. This is actually a function. This is a little block of code.
And this block of code performs a specific task. And the purpose of this main function
is it's the function that gets executed when we run our program. So any code that we put
inside of this main function is going to get executed when our program runs, I'm gonna
show you guys how we can create another function. So up here above this main function, I'm going
to create another function. And the task that this function will be performing is it's going
to say hi to the user. So whenever we're creating a function in c++, we need to give c++ a couple
pieces of information, the first piece of information we need to give is called a return
type. Now whenever we create these functions, a lot of times the functions will go off,
they'll perform a specific task, and then they'll return a value back to the caller.
And we're actually going to talk more about returns and return types in the next video.
But for the purposes of this video, you can kind of just follow along. And I'm just going
to go ahead and put void here. And when we put void here, it basically means that this
function is not going to return anything. So this is kind of like the most basic type
of function. And after we put void, now we need to give this function a name. Remember,
a function is a block of code that performs a task. So generally, when we're naming a
function, you're going to want to name it according to the task that is performing or
according to the purpose of the function. So I'm just going to call mine Say hi, because
our function is going to say hi to the user. Now I'm going to make an open and closed parentheses.
And after this, I'm going to make an open and closed curly bracket. Any code that I
put inside of this open and close curly bracket is going to be considered inside of the function.
So inside of here, why don't we just say like C out, and we'll just print out like Hello,
user. And that's basically all we'll do. So this is a very simple function, I just have
one line of code in here, I can have as many lines as I want. This is a simple function.
But I can have, you know, a dozen lines or 100 lines, if I wanted to, you can put as
many lines of code in the function as you want. Now, let's run our program. And we'll
see what happens. So I'm going to go ahead and run my program. And you'll see over here,
nothing's getting printed out. So hello, user isn't actually getting printed out when we
run our program. Here's the problem, when we want to execute the code that's inside
of these functions. In other words, when we want to execute a function, we have to do
something called calling it. So if I want this code inside of here to be executed, I
have to call the function. Now remember, the code inside this main function gets executed
by default, right, so no matter what this is going to get executed. So inside of here,
I can call this Say hi function, I can just type out say hi. And I can type an open close
parentheses. And when I do this, when I type this out, this tells c++ that I want to execute
all of the code that's inside of this, say hi function. So when c++ sees this, it's going
to jump up to this Say hi function is going to execute all the code inside of there, and
then it's going to come back down. So let's go ahead and run our program. And we'll see
what happens. So you can see over here, now we're printing out Hello, user. And real quick,
real quick, I just want to show you guys the flow of the so if I said like C out over here,
and I said top. And then I did the same thing over here, and I said bottom. When I run my
program, you'll see that we're printing out top, hello, user and then bottom. And actually,
this probably would have been better if I put new lines in there. But the point is that
when this program executes, c++ is going to execute this line of code, it's going to see
that we want to call this Say hi function. And it's actually going to leave this main
function, it's going to jump up here to the Say hi function, it'll execute all of the
code inside of here. Then when it runs out of code to execute inside of the say, Hi function
is going to jump back to the main function and execute this line. So that's basically
like the flow of what's happening. So this is a very basic function, but we can make
this more complex and one thing you can do With these functions, you can actually give
them information called parameters. So this Say hi function, I can give this a piece of
information. And the Say hi function can use that piece of information to, you know, performance
task differently or better or whatever. So these are called parameters. And if I want
to specify that this Say hi function should be given a piece of information, I can just
come over here and specify what piece of information it should take. So, in our case, instead of
saying hello user, why don't we say hello, hello to someone specific. So up here, I could
say like string name. And now this functions going to accept one parameter a name. And
down here, instead of saying hello, user, we can just say hello name. Now, whenever
I call this, say hi function now, because it's specifying that it needs to take a parameter,
I need to pass it a parameter, I need to pass it a value. So in here, I can just pass it
like Mike. And now it's going to print out Hello, Mike, because the value Mike is going
to get stored inside of this name variable. Alright, let's go ahead and run our program.
And now you'll see it's printing out Hello, Mike. So that's kind of cool. And you can
take any piece of information as a parameter, and you can also take multiple parameters.
So why don't we specify another parameter like age, so now the caller is going to have
to pass in their name and their age. So now we can say hello name, will say like you are.
And then we'll just say how old they are. So we'll say like age. So now we're passing
in two pieces of information inside of this function. And down here, when I call the function,
I have to give it two pieces of information. So now I could just say, like, Mike, and let's
say that I'm 60. So now, when we call this function, it's going to be able to take in
both of those pieces of information, and use them to perform the task differently. And
what's cool about these functions is I can call this as many times as I want. In other
words, I can reuse all of the code that's up here. So I can come down here, I can copy
this and why don't we do this a bunch. So we'll say like, Tom is going to be 45. And
let's say Steve, is going to be 19. And so now, I'm actually going to run this code three
different times. And actually, over here, I'm just going to put a and line so that gets
printed out on new lines. Alright, let's run the program. And you'll see it says hello,
Mike, you're 60 times 45 and Steve's 19. So functions are great, because we can reuse
the code that we write inside the function. So basically, like I wrote this function one
time, and I can reuse it as many times as I want inside of my program. So anytime you
have code that's going to be reused a lot, that's a good candidate for a function. Alright,
so I want to show you guys one more thing, you'll notice that I'm creating this function
up here above my main function, right. But if I was to take this and move it down here,
so for example, I moved it below the main function. Now when I run my program, we're
going to get an error, you can see we're getting a little red block here. This is the problem,
when we create this function below the main function, it doesn't actually know about it.
So like all this code up here, is getting executed. So c++ is trying to execute the
Say hi function, but it has no idea like what that is because we created it down here. So
what we can do is we can actually create what's called a function stub. So up here, we're
basically just going to write out the functions signature, and we're going to tell c++ about
it. So you guys remember, like, if I created a variable, like if I created an int, and
we just call it num, I don't have to give this a value right away, I could then come
down here and say, like num is equal to four or something. This is basically what we're
gonna do with this function, we're gonna essentially just declare the function and then somewhere
else in our program, we can define it. So over here, I'm just gonna say, void, say hi.
And it needs a string name, and it needs an int age. So now, when I create this little
function stub up here, or this function signature, I'm basically declaring the function and I
can give it a value down here. And now c++ is going to be able to call it because it's
going to have some information about it. So when I run my program, now, we're able to
call it No problem. So that's kind of just how we can do that with functions. And really,
you can create as many functions as you want. In fact, a good program will have lots and
lots and lots of functions. And the next tutorial, I'm going to show you guys how we can actually
get information back from functions using the return keyword. In this tutorial, I want
to talk to you guys about returns in c++. So when I'm talking about returns, I'm talking
about returns from functions. So in c++, we can write functions which are basically like
little containers that store a bunch of code that performs a specific task. And with those
functions, we can call them and we can also pass them information. So I can give them
all sorts of like parameters and different information that they can use to perform their
task better. But in addition to giving functions, information functions can actually give us
back some information. So when I call a function, not only can I give it parameters, but that
function can give information back to me. Now I'm going to show you guys how we can
use this and how we can use the return keyword in c++. So why don't we create a function
up here, and I actually want to create a function that's going to cube a number. So when I cube
a number, I'm basically taking it to the third power. So if I was to say like, two cubed,
it's basically just two raised to the third power, or it's just going to be two times
two times two, right? That's what cubing a number does. So why don't we create a c++
function that's going to cube a number. Now when we create a function in c++, the first
thing that we have to do is declare something called a return type. And a return type basically
tells c++ what type of value or what data type, this function is going to return. Now
in the last tutorial, if you're following along with the course, we just put void here.
And void basically meant that our function wasn't going to return any information. In
this tutorial, though, we definitely want to return some information. So you can put
any of the generic c++ types here, you can put like int, double, you put character, you
put string, essentially, any of those values can go here. In our case, we're going to cube
a number. So why don't we just make it a double. And I'm going to say double. And now we need
to give this a name. So I'm just going to call it cube. And we're going to take one
parameter into this function. So why don't we take a double, and we'll just call it num.
Now, inside of this function, all we want to do is cube the number and then return the
result that we get. So I'm actually going to create a double, I'm going to call it result.
And I'm going to set this equal to the cube value of num, so I'm just gonna set it equal
to num times num, times num. So this is basically me cubing num. So now result has inside of
it, the result of cubing all these numbers, okay, down here, I want to return the value
that's stored inside of results. So I can just say return result. And now this is going
to tell c++ that we want to return this value stored inside result back to the caller. Now
down here in my main function, I can actually call this function so I could say cube and
I could pass as a double, let's say like 5.0. Right? Now, actually, what's going to happen
is when we call cube and we pass it this information, it's actually going to get a value back. So
if I wanted, I could basically say like, double answer is equal to cube 5.0. And now the value
that gets returned back from this cube function is going to get stored inside of this answer
variable. So let me show you guys, I can say C out, and I'm just gonna print out answer.
And so now when I run my program, what you'll see is, we're going to be printing out the
result of cubing, five. And you'll see over here, we get 125. So five times five is 2525,
times five 125. So we are able to cube the number. And you can see here, this is getting
a value back. So I'm able to store the value that gets returned from this function inside
of this variable. If I wanted, I could also cut out the middleman and I could just print
out cube 5.0. So let's just paste this bad boy down here. And now it's going to do the
same exact thing. So we should get 125. Cool. And actually up here, if we wanted, instead
of storing num times num times num inside of this result variable, I could instead just
return these guys up here. So we again, we cut out the middleman. And we'll just return
that and we should get the same exact answer. So there's also one more thing I want to talk
to you guys about, which is this return statement, this returned keyword right here. This is
a very special word in c++. And basically whenever we type out this return keyword,
it's essentially telling c++ that we're done executing the code inside of this function.
So if I was to put like a C out here, and I just printed out like hello. When I run
my program Now, you'll notice that it's not printing out Hello, even though we're executing
that cube function, even though we're executing all that code, it's never printing out Hello.
That's because whenever we use this return keyword, it's going to break us out of the
function. So this line of code is actually never going to get executed because it's never
going to get reached. When c++ sees this line is is going to break out and we'll head back
down to the main method. So that's essentially what this is doing. And that's sort of the
basics of using returns. So like I said, if you didn't want to return a double, you could
return any type of date, I mean a string, you can even return something like an array.
So really, you can return anything you want. And then that value will get stored over here.
In this tutorial, I'm going to talk to you guys about if statements in c++, an if statement
is basically a structure that we can use in our code, which will allow our program to
respond to different situations. So when one situation occurs, we can do one thing. And
when another situation occurs, we can do another thing, essentially, we're able to check different
conditions. And when those conditions are true, we can do certain things. And when those
conditions are false, we can do other things. So I'm going to show you guys exactly how
this works down here in our main function, I'm just going to create a couple of different
things. So the first thing I'm going to do is create a variable, it's going to be a boolean
variable. Remember, a boolean variable stores a true or a false value, so I'm going to create
a Boolean called is male. And I'm going to give this a value initially of true. So we're
basically creating this variable izmail, it's storing whether or not someone is male, and
I'm giving it a value of true. Now I want to show you guys how we can use an if statement.
And an if statement, like I said, allows us to respond to different situations. So what
I'm going to do is I'm going to be able to write an if statement that will respond to
the situation where the user is a male, and the situation where the user is not a male.
So what I can do is I can actually say F, I'm going to make an open and close parentheses,
and then I'm going to make an open and closed curly bracket. Now, inside of this open and
close parentheses, I can specify a condition. So I can actually check a condition. And if
the condition that I put inside of those open and close parentheses is true, then we're
going to execute the code inside of here. If it's false, then we're going to move on.
So over here, we're essentially putting a true or a false value. And that's basically
a condition right? It's a true or false value. So I'm gonna come down here, I'll say if and
I'm just going to type out his mail. And essentially, what this is saying is if the value stored
inside of his mail is true, in other words, if the value in here is true, then we're going
to execute the code that's inside of these curly brackets. So I could say, like C out,
and I'm just going to type out like you are a male. And now when I run my program, you
guys, we'll see what happens. So run the program. And you'll see over here, it says you are
a male. And that's because the Boolean is male was true. So the value that was inside
of this condition, the value inside of the parentheses, which was true, and we executed
this code, if I made this false, now, you'll see that this code isn't going to get executed,
so we're not going to be printing anything out. So because the value inside of this parentheses,
because the condition was false, we're actually not going to execute this code. But let's
say that if the person wasn't male, we also wanted to handle that situation, I can use
another keyword in C called else so I can type out else just like that. And we're gonna
make an open and closed curly bracket. Now, inside of this open and close curly bracket,
I can put a message that's going to be displayed when this is false. So I'm going to show you
this a C out. And I'll say, you are not male, right, so I'm responding to this situation.
So now, even though is male is false, when I run my program, it's going to be able to
respond to that. So it's just gonna say you are not male. Essentially, what's happening
here is, my program is now smart enough to respond to this variable. So if this variable
is male is true, it can handle that. If it's not true, it can also handle that. And so
basically, inside of these parentheses, I specified a condition in our case, it was
a true or false value that was stored inside of this is male variable. So that's kind of
cool. Now let's up the ante a little bit, I want to show you guys how we can make these
more complex. This is a very simple example. But let's say I added in another Boolean,
so I had another Boolean called is tall. And I'm going to set this equal to true and actually,
I'm gonna set this equal to true as well. So now in addition to izmail, I also have
is tall. So let's say that we wanted to check to see if the person was both male. And if
they were tall, so down here, what I can do is I can use something called the AND operator
I could say is male, and is tall. And basically what's happening now is c++ is saying If the
person is male, and the person is tall, then we're going to print this out. So I'll just
say you are a tall male. So this code, this line of code down here, and any of the code
inside of these open and closed curly brackets is only going to get executed when is male
is true, and is tall is true. Essentially, this and operator is allowing me to check
two separate conditions. And both of them have to be true, in order for this line to
get printed out. So you'll see is male is true and is tall is also true. So now, when
I run my program, you'll see that it says you are a tall male. Here's the thing, though,
if I set one of these to false, so if I set his tall to false, this whole condition is
no longer going to be true. So then we're going to go down here to this else block.
And this should probably say, like, you are not male, or not tall, but we'll just leave
it like that just for demonstration purposes. Alright, so now it says you are not male,
right. And obviously, like I said, that message should be different. But the point is that
this condition was false, because one of these values up here was false. And that's how we
can use this and operator, there's another operator called the OR operator. And that
is similar to and except only one of these conditions has to be true, in order for the
whole thing to be true. So even though his tall is set to false, and his male is set
to true, this is still going to execute, so it's still gonna say you are a tall male,
because one of them is true. So let's go ahead and run this program. Now, you'll see it says
you are a tall male, so it executed the code that was inside this initial if block. And
that's because one of them is true. If I set both of these to false now, because we're
using the or now it's going to go down to you are not male. So you'll see down here
it says you are not male. So that's basically how we can use and and how we can use or with
the AND operator, we can put two conditions in both of them have to be true for the whole
thing to be true with the OR operator, only one of the conditions has to be true for the
whole thing to be true. And they can both be true as well. And it'll be true. But if
both of them are false, then it's going to be false. All right, let's make this even
more complex. So so I want to show you guys, another thing we can do, I'm going to bring
this back to and so I'm gonna say is male, and is tall. But let's say that we wanted
to check to see if they were male, and they weren't tall. So if they were like a short
male, well, I can actually check another condition. So I can use another keyword. In c++, it's
called else if, and I'm going to make an open and close parentheses and open and close curly
bracket. And I'm just going to bring this down to a new line. So else if is basically
saying, if this condition up here is false, then we're going to come down here, and we're
going to execute this condition. So if this condition appears false, instead of just going
to else, we're going to come over here, and we're going to check another separate condition.
So over here, I want to check to see if they're male, and they're not tall, so they're not
tall. So I can say, is male, just like before, so I'm saying elsif is male, and is tall.
But remember, I want to check to see if they're not tall. And here, I want to introduce you
guys to another operator, it's called the negation operator, it's basically an exclamation
point. And whenever you put this exclamation point before a condition like is tall, it's
going to actually negate that entire condition. So if is tall is true, and we put this negation
operator over here, it's going to set it equal to false, and vice versa. So essentially,
what I'm saying here is else if is male, and is not tall. That's basically what this is
saying. So now, over here, we can just print out, you are a short male, right? Because
if this code, in other words, if this condition is true, that means they're male, and they're
not tall, so they're short male. And there's one more that we can check. So I'm going to
say another LSF over here. And there's one more possible scenario with these two variables
up here, that's when they're tall, but they're not male. So I can say not, is male, and is
tall. So this would be like, you know, it could be like a tall female or something.
Right. And so down here, I'm going to go ahead and say C out, and I'll just say you are tall,
but not male. Right. So essentially, I'm just printing that out onto the screen. So now
we have all of these different situations covered. So over here in this if else block
which is what we would call this and actually down here in this else block, we would want
to change this. So this is going to be you are not male and not tall. So that's just
you know semantically going to Correct. All right, so we're able to respond to every possible
combination of these two variables up here. So let's try this out, I'm going to set both
of these equal to true. And now I'm going to run my program. So they're both equal to
true. So our program will be able to respond to that situation, who see it says you are
a tall male, awesome, that was able to respond to that, let's set his male equal to false.
So now we have izmail false and is tall, true, our program, once again, is going to be able
to handle that. So it's gonna say you are tall, but not male. So the program is smart
enough now to be able to tell us what we are depending on the value of these variables.
Let's try another one. So we'll set is male to true and is tall to false. And again, it's
going to be able to respond. So it will say you are a short male. And then finally, we'll
set them both false. And we should get the answer which is going to be you're not male,
and not tall. Awesome. So we were able to figure this out just by using all this stuff.
So let me walk you guys through this one more time, we have this if statement, and it's
checking if they're male. And if they're tall. Now, these are both conditions, right? So
I'm checking this is Gmail, this is a condition, essentially, it's a true or false value, right?
And then I'm checking is tall. And if both of these are true, then we'll execute the
code inside of here. If this is false, then we'll come down here and we'll check this
other condition. And we're going to keep doing that. And so we get down here, and we figured
out okay, they're not male, and they're not tall. So that's the basics of if statements.
And really, this is just scratching the surface of if statements, I talk to you guys about
a lot of the different things we can do. But there's one more thing I want to talk to you
guys about in the next tutorial, which are called comparisons. And down here, we're using
these Boolean variables in order to get our conditions right, so I'm using these, and
these are either going to be true or false, right. But we can also use something called
comparisons. And with comparisons, we can check to see if different values relate to
each other in different ways. So I could check to see if like a number is greater than another
number or something. And we can use those comparisons as our conditions. And that's
been pretty cool. So stick around for the next tutorial. And I'll talk to you guys more
about these if statements. In this tutorial, I'm going to talk to you guys some more about
if statements more specifically, we're going to be looking at using comparisons inside
of our if statement condition. So this would be kind of cool. In this tutorial, I want
to create a function, so we're going to write a function, and it's going to basically tell
us the max of two numbers. So this function will take as parameters, two numbers, and
then will basically return whichever number is the largest. And this is a great example
of how we can use comparisons with if statements. So over here, I have my main function. And
up here, I'm going to create another function. And let's just say it's going to return an
integer, and I'm just going to call it get max. And we'll make an open and close parentheses
and open and close curly bracket. So inside of this function, we're going to take two
parameters, one is going to be an integer, and we'll get another integer. So essentially,
we're going to take two integers as parameters as input. And the goal will be to figure out
which of the integers is the biggest, and return that back to the caller. First thing
I want to do is just create a variable called result. And I'm not going to give this value
right away. But eventually, at the end of this function, we're going to return results.
So whatever we do in here, we have to store whichever of these is bigger inside of this
result variable. So this should be kind of interesting. Now, we need to figure out which
is bigger. So we can use an if statement to do that. So I'm just going to say F, open
and close parentheses and an open and close curly bracket. Now, inside of this parentheses,
we need to put a condition. In other words, we need to put a true or false value, right?
If the value is true, then we'll execute whatever's down here. If the value is false, then we'll
just move on. Here's the thing though. In the last tutorial, when we were learning about
if statements, we were using Boolean, right, and a Boolean is a true or false value. So
it's really easy, right? You just throw it in there, and it's true, or its false. And
you can just kind of do the if statement. But in a lot of cases, we're not going to
have any Boolean information available to us. So it's not going to be as easy as just
like throwing a Boolean in there. All the only information that we have are these two
numbers. So how can we create like a true or a false value using just those two numbers?
Well, what we can do is we can use a comparison. So if I want to figure out which of these
numbers is bigger, I can just compare them right so over here inside of this if condition
I can basically just say if num one is greater than num two, if num one is greater than num
two, then we can just set result equal to num one. And the reason I'm doing that is
because we know for a fact That if this condition, if this comparison is true, the num one is
the bigger. So you can see this comparison num, one greater than num two, it's actually
going to get resolved down to a true or a false value. Right? num. One is either greater
than num two, or it's not technically, this is going to be a boolean value, right? Once
you evaluate the comparison, once we figured out if it's true or not, it's going to be
a true or false value, right? So I can basically check to see if num one is greater than num
two, and if it is, was that result equal to num one. And we can just say else, and we'll
set result equal to num two, right. And the reason we're saying this down here is because
of this condition is false. If num one isn't bigger than num two, then we know that num
two is the bigger of the two numbers, or in certain circumstances, the numbers might be
equal, but it's still going to work anyway. So down here, we're going to return the result.
So let's go ahead and test this function. I'm just gonna come down here. And why don't
we print out the answer. So I'm just gonna say get max. And we'll throw like a two and
a five in there, right? So pass in a two and a five. And now when we run this program,
hopefully we should get that five back. So I'm gonna run the program. And Yep, over here,
we get our five. So that's working perfectly. So this is basically how we can use comparisons
inside of these if statement conditions, right? Technically, this comparison is going to get
resolved down to a boolean value, it's going to get resolved down to a true or false, like
either the comparisons true or it's not right. And that's kind of interesting. So that's
sort of the basics. And in addition to using greater than we could also use less than,
we could use less than or equal to, we could use greater than or equal to, we can use equal
to and equal to is a double equal. So when we use the equal sign down here, we're using
it for assignment. So I'm assigning the variable result the value stored inside num one. When
I use this double equals, it's a comparison operator. So I'm comparing the value of num
one with the value of num two. And again, that's either going to be true or false, right?
They're either going to have the same value or they're not. And then the last one we can
use is a not equals and not equals does exactly what you think it does. This whole thing is
going to be true if num one is not equal to num, two. So those are sort of the basics.
Now let's make this a little bit more complex. So this get max function takes two integers.
What if we had it take three, so let's say int, num, three. Now all the sudden, instead
of just comparing two numbers, we have to figure out which is bigger among the three
numbers. And this is going to make our if statement a lot more complicated. So why don't
we just start over. And I'll show you guys how we can do this. So inside of this comparison,
I need to check to see if num one is bigger than num two, just like we did last time.
But I also need to check and see if num one is bigger than num three. If no one's bigger
than num two, and it's bigger than num three, then we know it's the biggest. So let's start
there. I'm just gonna say if num one. And instead of just saying greater than I'm gonna
use a greater than equals right, because there is that chance where they're all the same
number in which case this will cover that. So we can say if num one is greater than or
equal to num two. And so I'm going to use this and operator and this is going to allow
me to check another condition. So I can say num one is greater than or equal to num three.
So now if num one is greater than or equal to num two and is greater than or equal to
num, three, than we know num, that one's the biggest. So I'm going to set result equal
to num one. Now down here, we need to check another condition. So I'm gonna say else if
and we basically want to check to see if num two is greater than or equal to num one. And
num two is greater than or equal to num three. And if this is the case, in other words, we're
going to check this condition if this condition of here is false. So this condition is false.
We know that num one's not the biggest, right. But if this condition is true down here, then
we know number two is the biggest. So we'll say result is equal to num two. Now all we
have to do is just say else. And down here we can just say result is equal to num three.
Because if this condition is false, that means num one's not the biggest. If this condition
is also false, that means num twos not the biggest. So if num one's not the biggest and
num twos, not the biggest, then num three must be the biggest. So we're going to default
to this value. Alright, so that is the if else block that we need. And you see I'm using
a bunch of different stuff here. So not only am I using this and operator, I'm also using
these comparison operators and that's what these guys are called. So let's go ahead and
test our little function out. So now instead of saying two parameters, we need to pass
in three So in the past one to five and 10, and we should get 10 back, which we do, if
we wanted, we could test out each of the positions. So for example, I could test out, we'll make
this one the biggest now the second one. And we'll see if it works. And it does. And we'll
make this one the biggest now, and we'll see if it works. And it does cool. And then also
there was that condition where like two of them were the same. So let's try this were
two of these guys are going to be the same. And we're on the program. And yeah, so it's
still going to be able to return 200. So there is our max function. And hopefully this gives
you guys a little introduction into using comparisons. Now we can compare all different
types of data. So using these comparison operators, we can compare integers, we can also compare
like doubles and floats, and we can compare characters. So you can compare all those guys
just by using all that stuff in there. In this tutorial, I'm going to show you guys
how to build a four function calculator in c++. Now, if you've been following along with
this course, you'll know that in the beginning of the course, we created a very simple calculator.
And basically, that calculator was able to take in two numbers as input, and added them
together and printed out the answer. But in this tutorial, now we've learned a little
bit more in the c++ language, we're going to build a more complex calculator. So this
calculator is going to allow the user to enter in two numbers, but it's also going to allow
the user to specify which operation they want to perform. So they can specify that they
want to add the numbers and multiply the numbers, divide them, multiply them, whatever. So it's
essentially going to be a more powerful calculator. So down here, inside of my main function,
I want to start writing the code for this. And the first thing I'm going to do is create
a few variables. So I want to create a couple variables. And why don't we just create these
as and you could also make these doubles, if you wanted. We'll just call them num one
and node two. And these are going to represent the two numbers that we want to perform the
operation on. And then down here, we're also going to want to create a character. And I'm
going to call it Opie for operators. So we're going to throw the two numbers here. And we're
going to sort of the operator here. So it's either going to be plus or minus division,
or multiplication. Alright, so now that we've created those two variables, we want to start
writing the code to get the input from the user. The first thing that we want to do is
print out a prompt, so I'm just going to say C out. And I'll basically just print out enter
first number, so we'll prompt them to enter in the first number. And then down here, we're
going to use C in and remember you want to these, these two greater than signs. And we
want to store the user's input inside of num one, just like that. Okay, cool. So now that
we got num, one, I'm actually just going to copy this code, and then down here, we can
paste it two more times. So down here, we're going to ask them for the operator. So I'll
say enter, operator, and we're going to store the operator inside of that Opie variable
just like that. And then finally, we're going to enter in the second number, and we'll store
it inside of num two. So basically, what I'm doing is I'm prompting the user for all of
the information that we need. So we're going to get that first number, we're going to get
the operator and then we're going to get the second number. So they'd give me like five
plus two, or six divided by seven or something like that. Alright, so now that we have all
of that information, we have one more thing that we need to do, which is we need to figure
out what the user wants to do. Right over here, we have the operator. So ideally, they
would have entered in like a plus sign a minus sign, whatever, but we don't know what exactly
they entered in like we don't we have no idea what what they were going to enter in. So
we need to figure that out. And this is a perfect scenario for an if statement. So I'm
going to use an if statement. And I'll show you guys how we can check this. So I'm just
gonna say if. And we need to put a condition in here. So basically, what we want to do
is want to figure out what that operator is. So the first thing I'm gonna do is just check
to see if the operator is equal to a plus sign. Right? So if the operator is equal to
a plus sign, then we're basically just going to print out the result of adding the two
numbers together. So why don't we come up here, and I'm going to create an integer called
result. And then down here, we'll set result equal to num, one plus num, two. And we know
that we want to add them because if this condition is true, then we're going to execute this
code. So now let's do an ls F. And down here, I basically just want to check to see if it's
a minus sign. So I'll say if Opie is equal to a minus sign, and if it is equal to a minus
sign, then we can do exactly what we did up there. But we can subtract the two numbers.
So I'll say num, one minus num, two. Alright, so we can do the same thing for multiplication
and division. So I'm actually just going to copy this else if, and I'll paste it down
here. And now we'll say okay, is equal to forward slash, that means division. And then
one more time, we're going to do this for multiplication. So use this Asterix, and then
here we're going to multiply the two numbers. So now we're basically covering all of the
operators. So they enter in a plus sign, and we got that covered minus sign, division sign
and multiplication sign, right, we can cover all of those standard scenarios, but there's
always the chance that the user entered in an invalid operator. So instead of entering
in one of these, they just entered in some like, you know, random character, in which
case, I'm going to use an else block over here. And this LS block is going to get executed
whenever none of these conditions are true. So if none of the conditions are true, then
we know they entered an invalid operator. So I'm just going to go ahead and print that
out, I'm going to say C out. And we'll just print out invalid operator. Alright, so basically,
by the end of this, if block, we should have a value stored inside of result. So down here,
we'll just going to print it out. So I'll just say C out, and we'll print out result.
Alright, so let's see if our program works. I'm going to go ahead and run the program.
And it says enter first numbers, why don't we insert a five? Enter operator, let's enter
a plus sign and second number. Why don't we do 30. So now when I click enter, hopefully
our if statements going to execute, we'll be able to figure out which operation I was
trying to do, and then we'll be able to perform it correctly. So you see down here, we printed
out 35. So it looks like everything worked. So why don't we try a couple other ones. Let's
do like 50 divided by five. So down here, we get 10. Yes, it looks like that's working.
Alright, let's check one more thing, let's check to see if we enter an invalid operator.
So I'm gonna put like a five, we'll enter the operator, let's make it like a capital
G, and then put a nine for the second number. And you'll see down here it prints out invalid
operator. And then we're also getting this other little printout here. And actually,
that's just because we didn't give results we didn't give result in initial value. Alright,
so that's basically our four function calculator, you guys can see how we can combine getting
input from the user, then we can use these if statements to basically figure out what
the user input and that can be extremely powerful. And this tutorial, I'm going to talk to you
guys about using switch statements in c++. Now a switch statement is basically a special
type of if statement, which allows us to check one particular value against a bunch of other
values. So this is a very special use case, when we're trying to compare different things.
So I'm gonna talk to you guys about what switch statements are. And we'll do an example which
are kind of illustrate what they're doing. So in my program, In this tutorial, I actually
want to create a little function, which is going to be able to convert a number into
the day of a week. So basically, if the user passed in a zero to this function, I'd want
to be able to print out like Sunday, or if the user passed in a one, I'd want to be able
to print out Monday, etc. So I want the function to be able to convert an integer number to
a day of the week, just like that. So I'm gonna show you guys how we can do this inside
of our c++ program. So I'm going to create my function, and we're basically just going
to have it return a string. And I'm just going to call it get day of a week, just like that.
And I'm going to make an open and close parentheses. And this is going to take one parameter, which
is going to be an integer. And we'll just call it day num. So this is going to be the
number of the day of the week. So like zero through six, basically. Alright, so inside
of our little function, now, we need to figure out how we can do this. So depending on the
day of the week, in other words, depending on the day num, that they give us, we want
to be able to return a different value. So the first thing I'll do is I'm going to create
a variable. And it's just going to be a string, and I'm just going to call it day name. So
this will be like this will end up storing the name of the day that they requested. And
then down here to the end of this function, we're going to return it. So I'm just going
to say return day name. So now we know what we're going to end up returning. So our goal
inside of this function now is to populate this day name variable with the correct day
of the week. So let's think about this. I mean, one way that we can build this function
is by using an if statement. So I can say like, if day num is equal to zero, and if
day num is equal to zero, then I can say day name is equal to Sunday, right? That works.
And then I can just keep doing this for every day of the week. So I can say like, else if
and again, I have to check to see if day num is equal to something else. So day num is
equal to one and then down here we'll do the same exact thing. So we Ad name is equal to
Monday, right? I can keep doing this for every single day of the week. Here's the problem,
though, I'm gonna have to do this like seven times, right? Potentially eight times, if
we want to check for an invalid input. So I'm going to have to create eight of these
different if else structures in order to figure this out. And that is extremely inefficient.
And actually, this is a perfect circumstance for us to use something called a switch statement.
Now a switch statement essentially takes what we're doing over here with these if else statements,
and it makes it a lot easier. So one thing I want you guys to notice is in every single
one of these conditions, in other words, in every single one of these, if conditions,
we're checking to see if the same value, day num is equal to a different value. So in here,
we're saying Dana is equal to zero. Here, we're saying Dana equal to one and the next
one, it would be Dana equal to two, then Dana equal to three, all of those conditions are
checking to see if daenam is equal to something else. And when you have a situation like that,
it's a perfect candidate for a switch statement. So I'm going to show you guys how we can use
a switch statement to make this a lot easier. So I'm just going to write out switch and
open and close parentheses and an open and close curly brackets. So so far, it looks
a lot like an if statement, up here in these opening, close parentheses, I'm going to put
in a value. And we're basically going to put the value in here that we want to compare
to all those different values. So in my case, it's going to be daenam. Right, I'm comparing
daenam to 0123456, excetera, right? daenam is the value that I want to compare to all
the different values. Now inside of this switch statement, I can write cases. And basically
I can say case, and then I can just put a value in here. So I can say zero and a colon.
And then down here, I can basically type out what I want to happen. So I could say day
name is equal to Sunday. Now essentially, what this is doing is it's saying in the case,
that day, num is equal to zero, we want to set day name equal to Sunday. And then right
below here, I'm just going to say break. And I'll explain what break does in a second.
But I can basically make one of these cases for every single number. So I could say like,
case one. So in the case, the day num is equal to one, I'm going to set day name equal to
Monday. And then again, I'm just going to say break. And then I can keep doing this
for 23456, etc. Right. So what this break is doing down here, this break statement is
essentially breaking us out of the switch statement. So if I don't put this break statement
here, c++ is actually just going to keep looking through all these cases. So even if daenam
is equal to zero, and it sets it equal to Sunday, it's still going to keep going and
checking all these different values and less I say break right here. And generally, it's
a good idea to say break unless you want to be able to check for more than one condition,
we're basically saying in the case, the day num is equal to zero, we're going to do all
the code down here. And I'm actually going to make one of these for each day of the week.
So I'm going to go off and do that. And then we'll meet back here, and I'll kind of show
you guys what I have. Alright, so I went ahead and made one of these little case blocks for
every day of the week. So you can see down here we have zero through six. And they're
all corresponding with the appropriate day. So in case three, day name is Wednesday, etc,
right, so everything seems to be working. Now there's one more thing that we have to
do in this switch statement. So down here, there's always the chance that the user enters
in an invalid day of the week. So in other words, if the user doesn't enter zero through
six, then we want to be able to handle that. In other words, I want to be able to handle
the situation where the number that they entered isn't in here. And inside of a switch statement,
we have a special little block, which is called default. So we can just say default, a colon,
and then down here, this code is going to get executed, if none of the cases up here
are true. So if the number isn't equal to any of these numbers up here, then this code
inside the default block will get executed. So down here, I could just say, day name is
equal to invalid day number. Alright, so now we have our switch statement set up. And you
can see how this is a lot cleaner than something like an if statement. So this is a lot clearer
what's going on, we don't have to type out LSF like 1000 times, we don't need all those
parentheses and all that stuff. Basically, it's just really clear, it's really easy to
visualize what's going on. Alright, so let's see if our get day the week function is working.
I'm going to go in here and we're actually going to print out the value. So I'll say
C out. And we'll call this so I'll say get day of week and we need to pass this an integer.
So why don't we pass it zero. And hopefully we should get printed out here Monday. Or
Sunday. Whoops. Yeah. So over here Sunday, so Sunday would be the first day of the week.
Let's try. Let's see if we can get Monday. So I'm going to put one here instead of zero.
And now we should get Monday. Yeah. Awesome. All right, let's try one more, we'll try six.
So six is going to be Saturday. And let's see if it works. Cool. So Saturday worked
as well. Alright, there's one more situation, which is where we pass in an invalid number.
So if I pass in like a 10 here, now we'll be able to see that this isn't going to work.
So it should tell us invalid day number. Awesome. So this is a pretty cool function. And it's
working. And you can see how we can use these case statements. In order to make this a lot
easier. Now, here's the thing, I could have easily done this with an if statement, nothing
is stopping me from doing that. But it's a lot easier to use something like a switch
statement. And that's why c++ included it in the language. In this tutorial, I'm going
to show you guys how to use while loops in c++. Now a while loop is basically just a
programming structure that allows us to loop through a block of code, while a certain condition
is true. So with this tutorial, we're starting into something called loops. And loops are
extremely useful. And there's a lot of situations in our programs, specifically in c++, where
we're going to want to be able to loop over code and do things a bunch of times. So I'm
gonna introduce you guys to the most basic type of loop, which is a while loop. And we'll
sort of see what it does and see how it works. Alright, so down here, the first thing I'm
going to do before I create my while loop is I'm actually just going to create an integer.
And I'm just going to call it index, and I'm going to set it equal to one. So this isn't
100% necessary when you're creating while loops. We're just going to use this in our
example in this tutorial. Now, when I want to create a while loop, I can basically just
say, while I can make an open and close parentheses, and an open and closed, curly bracket, and
this is sort of like the main structure, the main outline for a while loop. Now here's
what's going to happen. Okay, over here, inside of these parentheses, I'm going to specify
a condition. Now, if you remember, learning about if statements in c++, this is essentially
what we're doing here. So in here, we're putting a condition just like we would an if statement.
And as long as this condition is true, I'm going to loop over and continually execute
all of the code that's inside of these curly brackets, as you'll see in a second, we're
going to put a bunch of code inside of these curly brackets. And as long as the condition
up here is true, we're going to keep looping through that code. And every single time we
loop through that code, we're going to check this condition. So let me just show you guys
this, and we can kind of get a feel for what's going on. So up here in these parentheses,
I can basically just write a condition. So what I want to do is I'm going to say while
index is less than or equal to five, so this is now my condition, while index is less than
or equal to five, I'm going to execute the code inside of this loop. So I'm going to
execute the code inside of these curly brackets. So down here, what I want to do is I basically
want to print out the value of index. So I'm just going to say, C out index. And then I'm
also going to say and so we print out a new line. And then down here, I'm going to increment
the index, so I'm just gonna say index plus plus. So you remember index plus, plus just
add one two, index essentially. Alright, so what I'm doing is I'm specifying my condition,
while index is less than or equal to five, I want to execute all of this code. So I'm
going to run my program. And maybe you can sort of see already what this is going to
do. But if not, we're going to run it and we're going to take a look at what's happening.
So you see over here, when I ran my program, we basically got 12345. Here's what's happening
over here, I created this variable called index, I set it equal to one and I basically
told c++ that while index is less than or equal to five, I want to keep looping over
this code. So basically, what happened was the first time we went through, we checked
this condition, so we check to see if index is less than or equal to five. Since that
was true. In other words, since index was one on the first iteration of the loop, we
executed this code, so we printed out one, and then we incremented index, so index was
now equal to two, then we came all the way back up here and we check this condition again.
So we check to see if index is less than or equal to five. In this case, index is equal
to so the conditions true index is less than or equal to five. So we're going to execute
all of the code inside of here again, so we printed out two, and then we incremented to
up to three, and then we came back up, we checked the condition again, every single
time we go through the loop, we check that condition. So before we execute the loop,
we execute that condition, we go back and check it again and execute the code again.
Eventually, we got to the point where index was equal to six. So we came up here to check
this condition and six is not less than or equal to five. So Then we just came down,
we broke out of the while loop, and everyone was happy. So that's essentially what we did.
And that's what a loop is basically you specify a condition, as long as that condition is
true, then you're good to go. And we can pretty much just keep looping through all the code
in there. And there are tons of situations where using loops is gonna come in handy.
And in the next tutorial, we're actually going to build a little game where we can use a
while loop. But before we do that, I want to talk to you guys about a couple more things
with these loops. The first thing you need to watch out for when you're using these loops
is something called an infinite loop. an infinite loop is a situation where this condition up
here never becomes false. So in certain circumstances, like the condition that you specify up here
won't become false ever. And then your loop will just continually loop through. So for
example, if I was to get rid of this line of code right here, where we're incrementing
index, now the index is always going to be one. And so this condition up here is never
going to be false. So when I run my code, you'll see over here that we're just continually
printing out one, you can see the screen keeps flashing, really what's happening is we're
just looping, looping, looping, looping through that while loop, and it's never going to stop
me I can leave this on for years. And it's never going to stop, right because that condition
is never going to be false. So you always want to make sure that any conditions that
you write with these, while loops at some point are going to become false. Now, there
are certain circumstances where you're going to want a while loop. But I would say for
the most part, while loops aren't going to be necessary. And they can actually be dangerous,
especially if you're doing something where you're like creating variables or allocating
memory, like you can end up crashing your program or even crashing your computer if
you're not careful. So that's just a little tip about infinite loops. There's one more
type of loop that I can show you in this tutorial. And it's a different type of while loops,
kind of like a different flavor of while loop. But before I show you that, I just want to
show you a demonstration. So if I make this int index equal to six, when I run my program,
the code inside of the while loop is never going to execute. And that's because before
we loop through all of this code, we check this condition first. So before I'm allowed
to execute any of this code, I check the condition up here in these parentheses. So I check to
see if index is less than or equal to five, since index is starting out at six. We're
never ever going to execute this code, right. So if I ran my program, you guys will see
nothing gets printed out, right. So we didn't do anything. But there's another type of loop,
which is called a do while loop. And I want to show you guys how we can make one, I'm
just going to cut this and I'm going to paste it down here. And I need to include a semi
colon. And then up here where that while used to be I'm just gonna say do and this is what's
called a do while loop. And a while loop is essentially just a normal while loop, but
it's reversed. So instead of checking the condition, and then executing the code, we're
going to execute the code, and then we're going to check the condition. So it's just
sort of like the while loop reversed. So now even though index is equal to six, I'm still
going to be able to execute this code first, then we're going to check the condition and
it's not going to let me do it again. So let me show you guys what happens when I run this.
And you'll see over here, we're able to print out that six. That's because with the do while
loop, you execute the code in the loop before you check the condition. And there's a bunch
of different situations where you can use while loops or do while loops. And to be honest
with you everything that you can do with a do while loop you can do with a normal while
loop. So do our loops aren't technically necessary. But in a lot of circumstances, they are useful.
So that's why they're included in the language B I mean, that's a basic overview of loops.
There's actually another type of loop that we can talk about in a future tutorial called
for loops. But for now, you know, practice with these wild loops, you can kind of see
like how they work. In this tutorial, I'm going to show you how to build a little guessing
game in c++. And this is going to be cool because we're actually going to be able to
use some of the stuff that we've been learning up to this point in the course. So we'll use
things like while loops, if statements, we'll use variables, we use all sorts of stuff in
order to build this game. So essentially, how this is going to go is the user is going
to try to guess a secret number, right? So I'm gonna have a secret number stored here
in my program. And the user's job will be to try and guess what that number is. So the
concept of the game is pretty simple. And as you'll see in a second, it's actually pretty
simple to program something like this. But here's the one caveat is if the user doesn't
get the guests right on the first try, I want to keep asking them keep prompting them to
enter in another guest. So I'm going to show you guys how we can do this. So the first
thing I want to do is create our secret number. So I'm just going to make an integer and I'm
just going to call it secret num. I'm just going to set this equal to I don't know, let's
say seven. So seven is going to be our secret number. And then the next thing I want to
do is create another integer which we're gonna call guests, and we're not going to give guests
a value right up front. So now we have our secret number, and we have our guests. And
we want to be able to keep asking the user to guess what the secret number is until they
get it right. So whenever something needs to be done continually, that's usually a good
sign that we want to use a while loop. So I'm going to go ahead and say, while when
make an open and close parentheses, and I'm gonna make an open and close curly bracket.
So inside of this while loop, we want to continually ask the user to enter in the number until
they get it right. So what I want to do here is specify a condition. In other words, I
want to keep looping Wow, the secret num is not equal to the guests. So as long as the
guests is not equal to the secret nom, in other words, as long as the user hasn't guessed
correctly, I want to keep going through this loop. Now, every time through the loop, I
want to prompt the user to input a number. So I'm just going to say C out. And we'll
basically just say, enter guests, so they're going to enter the number that they want to
guess. And then down here, we want to be able to get that answer, we want to store it in
a variable. So I'm just gonna say C n, two greater than signs. And I'm just gonna put
guests here. So basically, what we're telling see is that we want to take whatever the user
enters, store it inside of the guest. So basically, every time we go through this loop, the user
is going to be guessing, and then we're going to check their guests against the secret num.
If they got the secret num, right, then we'll just break out of the loop. So down here,
if they end up getting out of the loop, that means they got the guest right, so I can just
print out, you win, so we'll give them a success message. Alright, so this is essentially all
we need to build our guessing game. So I'm going to go ahead and run this program, and
we'll see how we did. Alright, so it says enter guests, so I'm just going to enter in
some numbers. So you can see I entered in a three, that wasn't the secret number, so
I can keep entering in different guesses. And no matter how many times I guess, it's
gonna keep asking me to guess until I get it right. Now let's try to get the guests
Right, so the secret number was a seven. So when I enter a seven in now, all the sudden
the condition that was in that while loop is going to be false. So the secret num is
going to be equal to the user's guess. And we'll break out of the while loop. And it's
going to say you win. So that's essentially how we can build our little guessing game.
Now I will say down here, I created this game using a while loop, right. But there's actually
another way that we can build this using a do while loop. So your homework for this tutorial
is to go off and see if you can do this using a do while loop instead of just a normal while
loop. Alright, so here's the thing, this is actually a pretty fun game, and it works out
we were able to program it really easily. But the game is a little bit unfair. It's
unfair in the sense that the user gets essentially unlimited guesses. So they can guess as many
times as they want. And honestly, that doesn't seem fair. So what we could do is we can impose
some sort of a guess limit. So I can say, hey, the user is only able to guess like three
times and then they lose the game, right. So I'm going to go ahead and show you guys
how we can actually program something like that, we're going to need to add in a couple
extra variables, the first variable I'm going to add in is going to be called guest count.
And this variable is basically just going to keep track of how many times the user has
tried to guess the secret numbers. So every time the user guesses the secret number, we
want to increment the guest count. And I'm actually going to set this equal to zero initially,
because the user will have guessed zero times, then down here, every time the user guesses,
I'm going to increment the guest count. So I'm just gonna say, guest count, plus plus.
So now we're basically able to keep track of how many times the user has tried to guess
the secret number. All right, we're gonna make another variable over here. And I basically
just want to call this gas limit. And guess limit is going to specify how many times the
user is able to guess until they lose. So why don't we set this equal to 30. So we'll
say that the user gets three guesses, they can't get the word and three guesses, then
they're going to lose the game. Alright. And then one more thing, we want to create another
variable, which is going to be a Boolean, and this is going to be called out of guesses.
And I'm going to set this equal to false initially. So out of guesses will tell us whether or
not the user has any guesses left. If out of guesses is false. That means the user has
guesses left, right? Because they're not out of guesses. If it's true, it means they don't
have any guesses left, because they ran out of guesses. Alright, so now that we have these
variables, I want to show you guys how we can modify this a while loop. So down here,
every time we go through this while loop, you'll see that we're letting the user guessed
the number. But here's the problem. If the user doesn't have any guesses left, then we
don't want them to be able to guess the number. Right? In other words, if they've reached
the guessed limit, we don't want to give them another guess. So what I can do here is I
can actually use an if statement and what I'm going to say is if guest count is less
than guest limit. So if the guest count is less than the guest limit, then I'm going
to let them guess, right? Because if this condition is true up here, that means that
they still have some guesses left, right? They haven't reached the guests limit. So
then they're going to be able to guess what increment the guest count, etc. Otherwise,
though, if the guest count isn't less than the guest limit, that means that they ran
out of guesses, right, so what I want to do is I want to toggle this Boolean. So basically,
I want to say out of guesses is equal to true. So I'm telling my program that they ran out
of guesses. Alright, so once we've set this equal to true now, we're basically done inside
of this while loop, right? So every time we go through, we're checking to see if they
have any guesses left. If they do, then we let them guess. Otherwise, we tell our program
that they're out of guesses. There's one more thing that we have to do to this while loop
which is modify the condition. And up here in this while loop condition, we can use this
and operator. And this and operator will allow me to put two conditions inside of there.
So I could say while secret num is not equal to guests, and we can check another condition.
So what I want to do is I want to check to see if they're out of guesses. So I want to
check to see if out of guesses. And I want to check to see if they're not out of guesses.
So we're going to keep looping as long as they haven't guessed the secret word. And
they're not out of guesses, right if one of those becomes false, so if they run out of
guesses, or if they guessed the secret word, then we're going to break out of the loop.
So that's essentially what's happening here. Alright, so one more thing down here below
the while loop, we have this C out, and we're just printing out you win. But this isn't
technically correct, because if the user runs out of guesses, then they're going to break
out of the loop. But they didn't win. So we shouldn't tell them that they won, we should
tell them that they lost. So what I'm going to do is make another if statement. And I'm
going to check to see if out of guesses. So if out of guesses is equal to true, then I
just want to print out a you lose message. And otherwise, if it's not equal to true in
other words, if they had guesses left, that means that they want so that means they guess
the secret word. Alright, so let's go ahead and run this program. And we'll see how we
did. Alright, so down here, it says enter a guest. So why don't we try to lose the game.
So I'm just gonna say three, four, and two. So this is our last guest. If we don't get
it on this try, that means that we lose. So you lose, right? So we lost the game. Alright,
so looks like it's working. So now instead of being able to guess infinite times, we
can only guess three times. Let's see if we can win the game now. So we're gonna guess
like a three, a two. Now we're on our last guests, I'm gonna say seven. And when I enter
this, it says you win. So we were able to win the game, as well. So this is sort of
how we can use all of these different programming structures together. So you'll see down here,
not only that, I use this while loop. And not only did I use all these variables, but
I also use if and else in combination with all that stuff. And really, this is what real
programming is going to look like, you know, it's not just going to be like little simple
examples, it's going to be a little bit messy just like this. Not that this is messy code.
But we want to be able to use all of these different programming structures in combination.
There's also one more thing I want to tell you guys, which is the way that I wrote this
little algorithm, this little function here, we could have written this like a dozen different
ways. So I could have programmed this game. And you know, I can think of like at least
two or three other ways that I could have done this. And this is another lesson in programming
is that generally there's going to be like five or six different ways to do the same
thing. So I could have done this with a do while loop, I could have used different things
I could have used like a break statement or something else. And so that's one of the cool
things about being a programmer is it's going in and trying different ways to do the same
thing. But that's basically how we can build this guessing game. Hopefully, you guys learned
a little bit about seeing all those different structures like ifs and Wiles, and variables
and all that stuff used together. In this tutorial, I want to talk to you guys about
for loops in c++. a for loop is a special type of loop, which actually allows us to
keep track of how many times we've gone through the loop. So in a for loop, we can use something
called an indexing variable. Basically, that indexing variable will allow us to keep track
of how many times we've gone through the loop. And you can also use the indexing variable
to do a bunch of other stuff too. So I'm going to show you guys how for loops work, we're
going to look at why they're useful and in what situations you're going to want to use
them. So over here, you'll see that I have this basic program set up and essentially
I just have a while loop over here. So I have this a integer called index and I just set
it equal to one. And then while index is less than or equal to five, I'm just printing out
the value of index. And then I'm incrementing it. So I'm gonna go ahead and run this program,
you guys can kind of see what's happening. So you'll see, we're basically just printing
out 125. So this is a very simple while loop. And if you've been following along with this
course, and you've you know, hopefully you're familiar with what while loops do at this
point. But I want you guys to notice a couple things. So this while loop is special, because
every time we go through the loop, this variable index tells us what iteration of the loop
we're on. So when I run this program, you'll see over here, like the first time we go through
the loop, index represents one right index has the value one, the second time we go through
the loop index has the value of 2/3, time has the value of three, etc. Right? So this
index variable is essentially telling us what iteration of the loop we're currently on.
Right. In other words, on every iteration of the loop, the value inside of this index
variable is changing. So it's in our case, it's incrementing, by one, but the point is,
is that we have this variable, this index variable, and it's essentially just keeping
track of how many times we've gone through the loop. Now, in c++, and in just about every
major programming language, this is a very, very powerful looping structure. In other
words, there's a lot of situations where keeping track of you know how many times we've gone
through the loop, or even just having a variable that's going to change every time we go through
the loop is very useful. And in fact, this is such a useful situation, that there's actually
a special loop just to do something like this. So there's a special type of loop whose sole
purpose is to provide us with a structure very similar to this, where we have this indexing
variable that is going to change every time we go through the loop. And in a lot of circumstances,
it's actually going to represent what iteration of the loop we're currently on. And that's
called a for loop. So I'm going to show you guys how we can build a for loop. And essentially
a for loop is just going to be exactly what we have up here, it's just going to be a lot
more compact and a lot easier for us to use. So it's great if we're live, we can just say
for making open and close parentheses and open and close curly bracket. So so far, it
looks exactly like the while loop. Now the one difference with the for loop is instead
of only having one thing up here in the parentheses. So in this while loop, we just have our looping
condition write, a lot of people call this like a loop guard. Down here in this for loop
parentheses, we're actually going to have three different things that we want to include.
So the first thing that we want to put inside of this for loop parentheses is a variable
declaration variable instantiation. So up here, you'll notice that I'm creating this
indexing variable called index, and I'm giving it a value of one. So I'm declaring the variable
and I'm assigning it an initial value, right, I'm initializing the variable. inside of this
for loop parentheses, we can do exactly that. So I could actually just copy this line, and
then down here, I can just paste this in here. And instead of calling it index, why don't
we just call it AI. So AI is gonna stand for index, we'll set it equal to one, then you'll
notice I have this semicolon here, after I put this semi colon, we can actually put another
line. So another thing that we have in this wild looping structure is our loop guard,
right, this loop condition, it's essentially telling us when we should loop so if this
condition up here is true, then we want to keep looping. So that's the next thing that
we want to put inside of this for loop parentheses. So we're putting this variable declaration
and initialization and then down here, we're also going to put the looping condition. So
this is going to tell the loop when it should stop and when it should go. Alright, so then
what I'm also going to put another semicolon here. So you'll notice I have a semicolon
here, after we create this variable. And I have another semicolon here, after we specify
the looping guard. The next thing I want to do is put in a line of code that's going to
get executed after each iteration of the loop. Up here in this while loop, you'll notice
that we have this line of code over here, index plus plus, this line of code is going
to get executed at the end of every single loop iteration. So the last thing that we're
going to do, when we go through this while loop is increment the index variable, right.
So that's essentially what we're going to put over here, we're going to put a line of
code, which is going to get executed after every iteration of this loop. And in our case,
we're just going to increment this variable i so I'm just going to say i plus plus, we're
adding one tie. Now again, I can put essentially, any line of code here that I want, I mean,
I can put like i minus minus, I could do, you know, basically whatever I want, but in
our case, we're just going to increment i just like we did up here with index. So now
inside of this for loop body inside of these open and close curly brackets, we can just
put whatever we want to do on each iteration of the loop. So that's going to be this line
up here. So I can actually just paste this guy in right here. And now we have a completed
for loop. So believe it or not, this loop down here is actually equivalent to this loop
up here, you'll notice this took 1234 lines of code, whereas this only takes two lines
of code. So like I said, this is such a common scenario where we want to have a variable
like index, which is, you know, essentially changing every time we go through the loop
and can allow us to keep track of things like the current loop iteration, such a common
situation that there's a special loop called a for loop for that. And the for loop, the
first thing we do is create the variable just like I did up there. So I'm initializing this
variable. The next thing we do is specify the looping guard the looping conditions,
that's what I did here. And then we specify a line of code that's going to get executed
after every iteration of the loop, which is going to be this i plus plus. And you'll notice
that these are all separated with semi colons. And you'll notice also that I don't need a
semicolon over here. So let's actually get rid of this while loop. And I'm going to go
ahead and show you guys what happens when we run the for loop. And actually, I need
to change these to eyes. So instead of this being index, I'm just gonna leave it as i
and this is also going to be I, so we have int is equal to one, we're going to keep looping
as long as i is less than or equal to five. And then at the end, we're just going to increment
it. So we're gonna say i plus plus. And every time through the loop, we are printing out,
I so let's go ahead and run this code. And you'll see we get the same exact output as
we did with the while loop. So it's just still just 12345. So what's cool about these four
loops is we can essentially, like keep track of a value every time we go through. And in
our case, we're basically just keeping track of how many times we've gone through the loop,
I want to show you guys how we can use these for loops to actually iterate through the
contents of an array. So let's say I created an array of integers, so we'll just call it
like nums. And I'm just going to give this an initial value. So why don't we just say
12573. So I have this array of integers. And it just has a bunch of numbers in it. And
if you recall, with integers, if we wanted to access a specific element inside of this
list, I could just say like nums, and then put the index in here. So if I said num zero,
this is going to give us access to this one, if I said nums, four, it's going to give us
access to 01234, it's going to give us access to this three, what I can actually do is I
can modify my for loop down here in order to actually loop through and print out all
the contents of this array. So array indexes start at zero, so I'm going to start this
I variable at zero. And what I'm going to do is I'm basically going to say i is less
than the number of elements inside of the array. So inside of this array, we have 12345
elements. So I'm going to say while i is less than five, we want to keep looping and then
I'm just going to say i plus plus. And down here, instead of printing out, I could actually
just print out nums ai. And what this is going to do is on the first iteration of the loop,
it's going to print out nums zero, on the second iteration of the loop, it's going to
print out nums one, on the third iteration of the loop, it's going to print out nums,
two, etc. And it's going to do that all the way up to number four, which as we saw is
going to be this three. So that's going to be the last element in the array. So we can
actually use this for loop to loop through all the elements in the nums array. So let's
go ahead and do that. And you'll see over here, we're printing out all the elements.
So we're printing out 12573. So that is a very common situation, we can use for loops
to iterate over the elements inside of an array. And it can be really useful. So play
around with these for loops, these are extremely useful. And one more time, I just want to
go over the structure. So the first thing we're doing over here is we're creating a
variable or we're initializing a variable, so I'm saying int is equal to zero. And then
I'm specifying my looping guard. So my loop condition, I'm saying we're gonna keep looping
as long as i is less than five. And then this is a line of code that will get run after
every iteration of the loop. So every time we go through this loop, we'll come up here,
run this line of code, and then we'll check the condition. Again, that is the basics of
a for loop. This is a very useful loop, I would say this is almost even more widely
used than a while loop and a lot of situations. So you definitely want to practice and play
around with these four loops. In this tutorial, I'm gonna show you guys how to build an exponent
function in c++. an exponent function is basically a function that will take a number to a specific
power. So I could write a function that I could pass in two numbers, like if I passed
in three and four. This would basically give me back three race to the fourth power. So
I'm gonna show you guys how we can build this and we'll actually get a chance to use four
loops. So we can use a for loop in order to build this function, that's going to be pretty
cool. So, up here, I'm going to create my exponent function. So we're going to have
this use a integer, so I'm just gonna say int. And why don't we just call this power
because it's taking a number to a specific power, and make an open and close parentheses
and open and close curly bracket. Now our power function is going to take two arguments.
So it's going to take a base number, and it's going to take a power number. And we're basically
going to take the base number to the power of the power number. So I'm just going to
say int, and then and power num. Now down here in our power function, we need to figure
out how we can do this. So I basically need to take bass num to power num. And we can
use something called a for loop in order to do that. So the first thing I want to do is
just create an a variable, so I'm just going to call it result. And I'm just going to set
this equal to one. And then down here, I'm basically just going to return results. So
essentially, our goal inside of this function is to get rid the result variable equal to
the value of the base num raised to the power number, right, that's kind of our goal. Throughout
this function, let's just say for the purposes of simplicity, and the purposes just for this
tutorial, that we're only going to be able to handle positive number exponents. So we're
just going to go ahead and assume that pounamu is going to be positive. And now let's just
make it a lot simpler and kind of help me to drive home the point a little bit better,
what we're going to need is a for loop, and I'm going to go ahead and write out this for
loop. Now up here in the parentheses, we need to specify three things, the first thing I
need to specify is a variable. So I'm just gonna say int i is equal to zero, I'll start
this out at zero. Now what I need to do is specify a looping a condition or a loop guard.
So I want to keep looping, as long as i is less than the power num. Essentially, what
I'm saying here is I want to go through this loop power num times. So as many times as
the power num specifies I want to go through this loop. So if power num is three, I want
to loop through three times, if panamas five, I want to loop through five times. That's
basically what this is saying. And then over here, we can just specify something that we
want to do after each iteration of the loop. So I'm just gonna say i plus plus. And basically
we'll just be incrementing, the value of i every time we go through the loop. Alright,
so down here inside of our for loop, we need to think about what we can do. So where are
we already know that we're going to be looping through here, power num times, right? So what
I think we should do is, we should multiply result times the base num, every time we go
through this loop. So what I'm going to say is result is equal to result times base num.
And the reason that this is going to work is because let's just kind of break this down,
the first time we go through this loop, right? result is going to be equal to one. So the
first time we go through this loop, we're multiplying base num by one, so we just get
based on the second time we go through the loop result is equal to based on right, in
other words, result has the value of base num. So the second time we go through, we're
essentially multiplying base num times based on based on squared, right, the third time
we go through this loop result has the value of base num squared. So for molting multiplying
base num squared times base num, that'll give us base num cubed. So that's kind of why this
is going to work, right. So we're looping through this for loop power num times. And
every time through the loop, we're multiplying result times the base num. And you can see
this for loop is very useful, because it allows us to only loop through the loop a specified
number of times, right? It makes it really easy for us to only loop through, you know,
power num times essentially. Alright, so this is the basic function. And this looks pretty
good to me. So again, we're only going to this is only going to be able to handle positive
number, exponent, so positive number power nums. Okay, so let's go ahead and call this.
So I'm just going to say, actually, why don't we print out the result. So I'm going to see
out power. And I'm going to pass in two numbers. So why don't we pass in two, and three, so
we're going to go ahead and do two cubed. So now let's run this function. And you'll
see we're getting eight. So two cubed is eight. Two times two is four, four times two is eight.
Let's try another one. Why don't we do four squared. So now we should get 16. And you
can see over there we get 16. So it looks like our little function is working. And basically
the point of this tutorial was just to kind of demonstrate to you another way that we
can use these for loops. So I'm using this for loop in order to essentially specify how
many times I want to loop through something. And four leaves are really useful for that
because we're keeping this count. So I is representing how many times we've gone through
the loop. So on the third iteration of the loop I can tell us that we've gone through
three times, essentially. And that's why this is useful. And so you can see, it's actually
really easy to do something like that it only takes up like two lines of code. So that's
the basics of building something like a power function. And actually, this is kind of useful,
because you can kind of see how a function like this might get put together. In this
tutorial, I want to talk to you guys about two separate subjects in c++, the first subject
we're going to talk about are going to be two dimensional arrays. And a two dimensional
array is a situation where we have an array, where every single element inside the array
is another array. So this is a pretty cool situation. And I want to talk to you guys
about one other thing which are nested for loops. And a nested for loop is a situation
where we have a for loop inside of another for loop. So this is gonna be kind of cool.
And you'll see we can actually use these two subjects together two dimensional arrays,
and nested for loops in order to build a kind of a cool program. So I'm gonna show you guys
the basics of doing that stuff. First thing I want to show you is a two dimensional array.
So I'm going to go ahead and create an array of numbers. And I'm just going to call it
number grid. And normally, when we create a regular array, we're just going to make
an open and close square bracket. But since we're making a two dimensional array, I want
to make another open close square bracket after this. Now remember, a two dimensional
array is a situation where we have an array, where every element inside of the array is
another array. And I'm going to show you guys how we can go ahead and set something like
this up. So I'm going to give this an initial value. So I'm just gonna initialize this.
And I'm basically just going to put a bunch of array elements inside of here. So the first
thing we're going to do is create the first element in the array. Now normally, if I was
creating an array, I could just kind of type out elements like this, right? You know, I
can kind of type them out delineate them with a comma, and then we have our array. But with
a two dimensional array, remember, each individual element is actually another array. So if I
want to create one element inside of this two dimensional array, I can basically go
like this, right, so I can make another sort of mini array inside of here. And I'm actually
just going to format this a little bit. And so now the first element in this number grid
array is going to be an array with elements one and two. So number grid, first element
is this array. And this array has two elements of its own. So I'm going to copy this, and
we're going to make another element. So I'm going to put a comma here, because remember,
we need a comma to delineate the different elements. And then down here, I'm just going
to paste. So now we're going to do three and four. So we have 1234. And why don't we do
one more, and we'll just do five, six. Alright, so essentially, what's happening here is we
have our overall array, right, so these two curly brackets represent the number grid array.
And inside of the number grid array, we have three elements. So this is the first element,
this is the second element. And this is the third element, all of which are arrays. And
each one of these arrays has one, two elements inside of them. So whenever we're creating
two dimensional arrays, we always want to specify the numbers over here. So inside of
this first open and closed square bracket, we want to tell c++, how many total elements
are in the number grid array. So in our case, we have three, because again, there's 123
elements. Then over here, we want to specify how many elements are inside of each array
element. So you'll notice we have 121212, etc. So there's going to be two elements in
each one of these arrays. And it's very important, especially when you're dealing with two dimensional
arrays, that you specify these numbers, because otherwise you can get really confused, you
know, and so by specifying Three, two, I know the basic layout, like I know that this array
has three rows, like you can call these rows, and then it has two columns. So these would
be like columns, essentially, we're building a matrix. Alright, so that is a two dimensional
array. And let's talk about how we can actually access some of these elements. So if I want
to access some of these elements, I'm actually just gonna go ahead and print some of these
out. So over here, I can just say number grid, and what I can do is I can make two open and
closed square brackets, so I can go just like just like this. And inside of these open and
closed square brackets, these first ones I want to specify the row. In other words, I
want to specify the element inside of number grid that I want to access. So this would
be the element at position zero, this would be the element at position one, and this would
be the element at position two. So let's say we want to access this element right here.
I can put zero here because it's inside of element zero. And then over here, I want to
put the index of that element inside of the array, so it's going to be an index position
01. So zero again is corresponding to this overall element, and one is corresponding
to this element inside of that array. Alright, so now when we print this out, we should get
a two. And you'll see over here, we get that two. Let's try one more, why don't we try
to get this five over here. So five is going to be an element 012. So we're going to put
a two over here, and it's going to be element zero, so we're just going to put a zero and
now we should get that five, which we do. Alright, so that kind of shows you a little
bit about how we can create a two dimensional array. And actually, this same concept can
apply to like n dimensional arrays. So you could have a three or four or five dimensional
array. And all these same concepts are going to apply. Obviously, the more dimensions you
add, the more complex it becomes. But you can get pretty complex with arrays, just by
using this technique. So that was the first thing I wanted to show you guys. And now I
want to introduce another topic, which is a nested for loop. And nested for loop is
a situation where we have a for loop inside of another for loop. And actually nested for
loops can be extremely useful, because we can use them to print out all of the elements
inside of this two dimensional array. So basically, we could iterate through all the elements
inside of here using a nested for loop, but I'm going to show you guys how that's going
to work. So down here, I want to create a basic for loop. So I'm just gonna say for,
and I'm just gonna say int i is equal to zero. Again, our goal here is to be able to loop
through all of the elements in this array. And, you know, as I sort of create this for
loop, just kind of stick with me, eventually, this is all gonna make sense. But what I want
to do is I want to keep looping, while i is less than three. And I'm using three here,
because I want this for loop to loop through all of these individual elements. So all of
the arrays inside of the number grid array, and over here, I'm just gonna say i plus plus.
So this for loop is responsible for iterating over all of these elements. So this first
element, the second element in this third element, but remember, each of these elements
is another array. So what I want to do is for each of these arrays, I want to iterate
over each of the elements inside of those arrays. So I can create another for loop to
do that. So I can say, int, and I'm just going to call this J. And a lot of times when we're
using nested for loops, people will name these ij, that's kind of a convention, I'm gonna
set this equal to zero, and I'm going to keep looping as long as j is less than two. And
remember, two is a how many elements are inside each of these arrays, right? So this loop
over here is responsible for iterating through all of these elements, and this one down here
is responsible for iterating through all of these elements. So I'm gonna say j less than
two, and then I'm just gonna say j plus plus. So now we have our basic structure setup.
For every iteration of this I loop, this j loop is going to fully iterate. So it's going
to go through all the way. And down here, I'm just going to see out. And I'm basically
just going to print out all these different elements. So I'm going to print out number
grid, i j, and you guys will see in a second, basically how this is going to work. And then
real quick down here, I'm just going to see out a new line. So I'm just going to say C
out and L and that'll print kind of a new line. So let's go ahead and run this. And
then I'll give you guys more of an explanation as far as what it's doing. So when I run this,
you'll notice that we're actually printing out all of these elements. So we're printing
out 123456. So I'm actually able to go through and iterate over every single element inside
of this two dimensional array. And basically what's happening is, every time we go through
this top loop up here, this AI loop, we're fully iterating through the J loop. So this
I loop is responsible for iterating over each individual element. So it's responsible for
iterating over this, this and then this, this j loop is responsible for iterating over each
of the elements inside of those elements, which are arrays. So the J loop is going to
loop over this and this. So the first time we go through this loop is going to be equal
to zero and j is going to be equal to zero. So we're going to print this out, then we're
going to go through this j loop again, I is still going to be equal to zero, but j is
going to be equal to one. So we're going to print this element out. And then AI is going
to be equal to one. So it's going to be one zero, we'll print this out and then it's going
to be one one. So we'll print this out. And that's essentially what's happening here.
So nested for loops and even like nested while loops, I mean, any sort of nested loop can
be very useful. And it can be useful for looping through like I said, complex structures like
that. And this tutorial on talk to you guys By using comments in c++, or comments are
a little special blocks of code, which aren't actually going to get executed or rendered
by c++. So a lot of times in your programs, you're going to want to, you know, basically
write things that are meant for human beings. So whenever we're writing programs, like whenever
we're writing code or instructions, those instructions are meant for the computer. So
I can tell the computer to print something out, or I can tell the computer to loop over
a block of code or something like that. But a lot of times, we're going to want to write
out messages just for human beings, so either for yourself or for someone else. And we can
do that using something called a comment. And I'm gonna show you guys what comments
are essentially, a comment is just a, you know, a little line of code or a block of
code that c++ is going to ignore. And therefore we can use it to write little messages for
ourselves. So in order to create a comment in c++, there's actually a couple of ways
we can do it. The first way is just to make two forward slashes. So when I make two forward
slashes, you'll notice that when I start typing, all of this text is actually colored different
than the text over here. That's because this is a comment. So any text that I put after
these two forward slashes is going to be considered a comment. And it's not actually going to
get rendered by c++. So even though I have a bunch of nonsense up here, I can still run
my program, and it's still going to be able to execute. So you'll see I can run the program.
And there's no errors, it's just printing out comments are fun. So this is a really
great way to kind of write a little note, a lot of people will use this to write notes
to themselves, or maybe write notes to other developers. You can also use this to like
describe a line of code. So I could like describe this line of code over here, I can say like,
print out text, right? Obviously, you know, you probably wouldn't need to describe this
line. But if you had like a complex function, or you know, complex loop or something like
that a comment can come in handy. You can also put these comments like after a line
of code, so I can just cut this out and paste it down here. And you'll see that everything
that comes after these two forward slashes is going to be considered a comment. But I
can still put code over here. And again, you can use this to like describe what the line
of code is doing or something like that. The one downside to this type of comment, though,
is that it only works on one single line. So if I come down here to the new line, all
of a sudden, this goes back to normal text. So this is no longer a comment. If you want
to have a long block of comments, though, you can use something called an opening and
closing tags. So if I make a forward slash, and an Asterix, then everything that comes
after this, even if it's on a different line is going to be considered a comments, you
can see all of this stuff is now a comment. But I can close this off by saying an Asterix
and another forward slash. But now everything that's in between these two tags is going
to be considered a comment. And these two types of comments are very common. And you
know, pretty much either one you use is going to be correct. And it's going to work out.
So that's basically how the you know the two types of comments and how you can use them.
Another way that comments are useful is for commenting out lines of code. So a lot of
times when you're working with your programs, maybe you want to try to run your program
without a certain line of code. And you might be running into a problem and you think a
certain line of code is the culprit? Well, one option would be to just remove the line
of code. So for example, let's say that this line of code was potentially like messing
up my program. And I wanted to see how the program would act without that line of code.
Well, I could just delete it, save the file, and then run the program. And now we're running
the program without that line of code. The problem with that, though, is I have to physically
delete the line of code, right? If I wanted, though, I could just put a comment in front
of it. And now this entire line is going to get ignored by c++. So it's essentially the
same as removing it, but we don't actually have to physically remove it from the file,
it's still gonna be there, we can still see it, we still know that it's there. It's just
not going to get executed. So that's another useful way that comments can come in handy.
So yeah, I think a lot of developers use comments, you definitely want to take advantage of them
in your programs when they're appropriate. In this tutorial, I want to talk to you guys
about pointers in c++. Our pointer is basically just a type of information that we can work
with in our programs. If you follow along with this course up to this point, we've been
working with all different types of data. So we were working with things like integers,
which are whole numbers, we've been working with like doubles, which are decimal numbers
when working with strings and chars which are like plain text. And this is where I want
to introduce you guys to another type of information we can deal with which are called pointers.
And pointers are basically just memory addresses. So we're going to have get into what that
means. What is a memory address, we're gonna talk about all that stuff. And I'll give you
a full introduction into pointers. So over here in my program, I have a few different
variables that I created. I have an integer called age and I gave it you know, a value
Double college GPA and a string called name. Now all of these are variables in my program,
right. So in other words, all of these are essentially just containers where I'm storing
specific information. For my purposes, when I'm writing this program, I'm storing the
value 19, inside of this age variable, right, I'm storing 2.7 inside of this GPA variable.
But let's kind of, you know, go underneath the hood a little bit and talk about what's
actually going on here. So in everyone's computer, you have something called your memory. And
another word for this would be Ram. So you might have heard people talk about ram stands
for random access memory, it's essentially just the active memory that your computer's
using when it's running programs. So whenever your computer runs a program, it's using Ram.
So it's storing information inside of this memory, let's just say our program, for example.
So in the case of this program, if I was to run this program, my computer would actually
be using Ram. In other words, my computer is going to use its memory in order to store
and keep track of information. In fact, it's going to be storing all of these values inside
of its memory. So when I create this variable age, and I give it a value, what's actually
happening is my program is going to take this value 19. And it's going to store it inside
the physical memory of my computer. When I create this double GPA, my computer is going
to take this number and it's going to store it physically inside of the memory in my computer.
Same goes for that string. And so for all of these different pieces of data that are
all actually getting stored inside of the memory of my computer, so when I write the
program, like for my purposes, I just know that 19 is stored inside the age variable.
But when we go underneath the hood 19 is actually stored in side of the computer's memory, so
it's physically stored in the memory. Now one of the cool things about the memory of
our computer is there's a bunch of these little containers, right, each one of these variables,
each one of these values is essentially just like inside of one of those containers, right?
That's kind of a broad strokes explanation, but you can basically think of it as like
this number 19 is stored inside of a container in memory, this value 2.7 is stored inside
of a container in memory. And each of the containers inside the memory of my computer
where these values are stored has an address. So it has an address, which uniquely identifies
it. So for example, this value 19 is stored inside the physical memory of my computer,
and it's stored at a specific memory address. This value 2.7 is stored in the memory of
my computer, and it's stored at a physical memory address. And so when my program wants
to access this value, it can access it by using that memory address. When I want to
access the variable, I can just access it using like age or GPA. But when my computer
wants to access it, my computer has to access it using the physical memory address. So that's
kind of like what's going on. And I want to show you guys how we can go ahead and access
that physical memory address. So I can actually print it out, I get to say C out. And if I
wanted, I could basically print out the memory address where each of these variables are
stored. In other words, I could print out the memory address where this value 19 is
stored, I can print out the memory address where this value 2.7 is stored. All I have
to do is just make an ampersand and then I can type in the name of a variable. So I could
type in like age for example. And what this is going to do is when I put this ampersand
here, it's essentially going to tell c++ that I want to print out the memory address where
the age variable is stored. In other words, I want to print out the memory address where
this value of 19 is stored. So when I run my program, you'll notice over here that I'm
getting this kind of crazy number. So 0x, six, a FPS zero. This is a hexadecimal number,
basically, it's just some long number. That will be very difficult for a human being to
remember. But the computer is able to remember it just fine. So if you were to go to this
physical memory address inside of my computer, you would find the value 19. I mean, that's
essentially what this is doing. Right? So that's basically like where that value 19
lives inside of our memory. Right. So if I wanted to access or change it or modify it,
my program can do it using that address. And that's essentially what we're talking about.
And in c++, we have a word for these addresses. So we have like a special word that we use
when we're talking about addresses. It's called a pointer. So generally, if I'm working in
c++, and I want to talk about a memory address, I'm going to talk about pointers. So I would
say that this is a pointer, right. So over here, we can say that I'm printing out a pointer.
And a pointer is just a type of information. It's just a memory address. So any memory
address that we're working with, or that we're using inside of our programs is going to be
considered a pointer. And the way that we can access the pointer of these variables
or in other words, the way We can access the memory addresses where these variables are
stored is by using this ampersand. So I have a little demonstration I want to show you
guys, this is just a block of code that I wrote out before the tutorial. And it's essentially
just printing out all of the memory addresses for all of these variables. So I'm going to
go ahead and run this. So you can see over here, I'm essentially just printing out all
the individual memory addresses for all of these variables. So we have age, and it's
located at this memory address, we have GPA at this memory address and name at this memory
address. So all of these memory addresses, if we were to go to them in our like physical
RAM and the physical memory of our computer, we would see those values. And again, we would
call these pointers. So this is a pointer, this is a pointer pointer is just a memory
address that is just a type of data, we're just giving it another name. So that's kind
of cool. And that kind of shows you guys how we can access like the memory addresses of
these different variables. But we can actually take this a step further. So I want to show
you guys another thing that I can do. So I can actually create a variable where I can
store the pointer. So over here, like I'm creating an integer variable, and inside of
it, I'm storing an integer right over here, I'm creating a double variable, and I'm storing
a double over here, I'm creating a string variable, I'm storing a string. And actually,
if we want to manage and keep track of the memory addresses or the pointers inside of
our programs, we can create a pointer variable. So I'm going to show you guys how we can do
that. And a pointer variable will basically be just a container where we can store a pointer,
right, it's a container where we can store a memory address. Generally, when we're working
with memory addresses in our programs, we're not just going to work with random addresses,
right. In other words, like I don't know, any, like meaningful memory addresses off
the top of my head. So generally, when we're using memory addresses, we're going to be
using the memory addresses of the different variables in our programs. So therefore, when
we create an actual pointer variable, in other words, when I create a container, what I'm
going to store a pointer, I'm generally going to create it based off of one of these variables.
So let's go ahead and create a pointer variable that will store the pointer. For this age
variable, I'm just going to say int. And whenever we create a pointer variable, you always want
to use this special character, which is going to be the Asterix, and then you want to type
in the name of the variable. So I'm just going to call this P age. And a lot of times when
you're creating pointer variables, you'll use this lowercase P. And then you'll type
out the name of the variable whose memory address you're storing. So I could say int
p age is equal to and now I can just say ampersand age. So remember when we use this ampersand,
and then we type out the name of the variable that gives us the pointer. In other words,
that gives us the memory address where the value is stored. So I'm essentially storing
this pointer inside of this variable over here called p age, I could do the same thing
down here for this double, I could just say double Asterix, and I'm just gonna say p GPA.
And I'm going to set this equal to ampersand GPA. So now this pgpa pointer variable is
storing inside of it a pointer. In other words, that storing inside of it a memory address,
and it just happens to be the memory address of this GPA variable. I can do the same thing
for this string down here. So I can say string p name. And actually don't forget to put the
Asterix and I can just set this equal to ampersand name. And now this pointer variable p name
is storing the pointer. In other words, it's storing the memory address have this name
variable. So now, I can actually work with these different pointer values using these
pointer variables. So if I was to come down here, I could say C out. And I could just
print out like p age. And now this is going to go ahead and print out the value that's
stored inside of that pointer variable, which is going to be a pointer, which should be
the memory address of Ph. So you can see down there, that's exactly what we get. So that's
kind of useful. And, you know, really, I think a lot of times people get a little intimidated
or maybe confused with pointers. But pointers are really simple. A pointer is just another
type of data that we can work with in c++. So you know, you can work with things like
integers, which are whole numbers, you can work with doubles, which are decimal numbers,
you could work with strings, which are just a bunch of characters, you could also work
with pointers, which are memory addresses, you know, that's all it is. It's just a different
type of data. And we when we create a pointer variable, it's just a container where we can
store a pointer. That's kind of all it is. Now I want to point out to you guys, whenever
I created this pointer variable, you'll notice that I use the data type of the variable that
I was pointing to. So this pointer variable is storing the memory address of an integer.
Therefore I said int over here, this pointer variable is storing the address of a double.
So I said double over here. Same thing down here. This is storing the memory does have
a string. So I said string over here. That's basically just what you have to do when we're
making pointer variables. This kind of brings me to another point I want to show you guys
one more thing we can do, which is called dereferencing, a pointer. And dereferencing.
a pointer basically means that we're going to grab the value that's inside of the memory
address. So remember, a pointer is a memory address. So if I have a pointer, that is a
the address of a physical, you know, slot or a physical location, in my computer's RAM,
and my computer's memory, that's all it is, it's just an address, right? Like you have
an address for your house. That's kind of what this is, it's an address. But instead
of for a house, it's for a memory location. And when we dereference a pointer, we're basically
telling c++ that instead of using the actual pointer, we now want to go to that physical
memory address, grab the value out of there and use it in our program. And the way that
I can do that is by dereferencing. it. So you'll notice, like when I print out p h,
right, this is a pointer. So when I, when I run this program, and I print it out, we
get a memory address. But if I was to dereference, this pointer, we would actually end up getting
the value that was stored at that memory address. So if I put an Asterix here, this is what's
called dereferencing, a pointer. So I could say Asterix p age, and now we'll be dereferencing,
the P age pointer. So now instead of getting that memory address, when I run this program,
we're going to get the value 19 because that is the value at the memory address that the
pointer was storing, and the pointer was representing. So I'm here in my program, and you'll see
down here we get 19. So when I get rid of this Asterix, we get the memory address, when
I put the Asterix here, we're dereferencing the pointer. So we just get 19. And that's
kind of how that works. So hopefully that makes sense. I'm gonna show you guys one more
thing. So dereferencing is really useful. And if I just said, for example, like ampersand
GPA, right? GPA is this variable up here, it's storing the value of 2.7. This is a pointer,
right, so this is going to give me the memory address. So over here, when I run this, we
get this memory address. But I could just dereference this, and hopefully this kind
of shows you guys what we're doing. So I can just put an Asterix here, and this is going
to dereference, this entire thing. So now this Asterix is dereferencing, this pointer,
and we should end up getting the actual value, which is 2.7. So you can see we get this value.
And you can I mean you can kind of chain these together. Not that you'd want to but I could
say like ampersand, and now we'll get the memory address again. So that's kind of how
that works. And, you know, pointers. And, you know, working with pointers, doing stuff
with pointers can be really useful in c++. This is also a very useful concept in another
language, which is called C. And C is actually the programming language that c++ is based
on. You use pointers a lot in that ceiling which but they're also important in c++. And
if you're going to be a c++ developer programmer, you need to have at least a baseline understanding
of what pointers are and how they work. So hopefully that gives you a little bit of an
idea of what they are. Remember, essentially, pointers are just types of information. It's
just another type of data that we can use in our programs, we can print them out, we
can use them, we can store them inside of variables, we can also dereference them, as
you saw earlier in the tutorial. So hopefully that helps. And hopefully now you can kind
of play around with pointers. In this tutorial, I'm gonna teach you guys about classes and
objects in c++ classes and objects are extremely useful. And this is a very important topic
in c++. So I'm gonna give you guys a full overview of what these are. And we'll kind
of get an idea of how to create classes and objects. So down here in my little program
just created a few different variables. And basically, what I'm doing here is I'm just
storing different pieces of information, right, I'm storing my name, inside of this name variable,
and we're storing it inside of a string. I'm storing pi, the first three digits of Pi in
this double variable. And then I'm storing my favorite letter G inside of this character
variable. So just using these variables, were able to store a bunch of different types of
information. And actually, if you know anything about c++ data types, you'll know that by
default, c++ allows us to store a bunch of different types of data. So we can store like
text. We can store numbers, we can store like whole numbers, decimal numbers, we can store
characters, we can store all of these different types of information. But here's the problem
though. And this is kind of a limitation to this is that there's a lot of types of information.
In other words, there's a lot of things there's a lot of real world entities that can't just
be represented using a string or a number or a character. Like there's a lot of things
that we just can't represent with a string or a number or a character like, like a phone
for example, like I can't really like represent a phone In my program using like a string
or using just a number, or think of something like a computer, or a keyboard, or an animal
or a person, like there's all these, like real world entities, that it can't necessarily
just be represented using the limited data types that we have, or we only have like,
a certain number of data types that we can use. And those data types really aren't enough
for us to necessarily model everything in the real world. So imagine I was creating
a program, for example, where I wanted to work with books, like maybe I was creating
a program for a library. And inside of that program, we needed to represent book like,
I wanted to be able to work with books and store books and use books inside of my program.
Well, there's no book data type, right? There's no, like, I can't just come over here and
say, like, book, you know, my book, whatever, like, there's no book data type for me to
use. So this is kind of a problem. And, you know, forget, forget about books for a second
imagine any other, you know, real world object, like a person or a location, or a musical
instrument, or really any type of like object in the real world that I'd want to represent
in my program. And so you know, really, the problem is we only have a limited data types,
right, there's only certain types of data we can represent. And this is where classes
and objects come in. So what we can do is we can actually create a class. And a class
is essentially a new data type. So when I create a class, I'm basically creating a new
data type in c++. And that's really why classes are useful, because we can kind of create
a blueprint for a new type of data in our program. So like I said, before, you know,
I can't just come down and down here and create like a book data type, right. But what I can
do is I can create a class that will specify what a book data type is. And then I can actually
use that book data type that I created inside of my program. So I'm going to show you guys
how we can do this, let's write a program that will allow us to store and work with
and represent books inside of our program. So we're essentially going to be creating
a book data type. In order for me to do this, I am just going to come up here. And I can
do this in the same file as this main function. And I'm going to create a class and a class
is essentially just a specification or a blueprint for a new data type in our program. So when
I create a class, I'm basically creating a new data type, I'm creating a new type of
data that we can work with, and we can use in our programs, it's pretty cool. So over
here to create a class, I'm just gonna say class, and then I'm going to give this a name.
And generally when we're naming classes, we are going to name them with capital letter.
So I'm just going to make call this book. So we're going to create a book class. So
this book class is going to act as a blueprint or a template for the book data type. Okay,
so this is just a specification, right? We're basically specifying what a book is, inside
of our program. So what I want to do down here is I want to actually define the book
data type. And we can do that by giving it attributes. So we can basically say that a
book is going to have like two or three or five different attributes that will describe
it. And we're going to use all those other data types like strings, integers, doubles,
characters, etc, in order to represent those attributes. So essentially, this book class
is going to be a collection of attributes, which are going to be things like numbers
and strings, etc. So I'm just going to say public, and I'm going to make a colon here.
And then we're going to come down here, and I'm actually going to end up this. So it's
a little bit easier to see down here, right below where I said public, I want to specify
some attributes. So essentially, I'm mapping out what a book is going to be and what it's
going to have. So let's think about what are the different attributes of a book? Well,
the first and probably the most obvious is going to be the title. And we can represent
the title as a string. So I can just say string title. And I'm just declaring these variables,
I'm not going to give them values. So what's another walnuts thing? Probably the author,
right. So another attribute of a book would be the book's author. And let's try to think
of one more. So I think another good one might be maybe let's do pages. So like this would
be the number of pages in the book. And I'm sure you can think of a lot more we could
think of like publishing date, like a publishing company, you know, you could think of, you
know, a version number. There's a lot of different attributes we could store for a book. But
let's keep it simple for now. Essentially, what I'm doing here, as I'm mapping out a
blueprint, so I'm saying this is the blueprint for the book, data type. And a book in our
program can have a title can have an author and can have a number of pages associated
to it. So this is a more of a complex data type. Really, it's a it's a class. So this
is basically all we need. So we're essentially just specifying what a book is. We're telling
c++ what a book is in our program. So now I'm going to come down here and I'm actually
going to create a book. So remember, this is just a blueprint. This is a template, it's
a specification. But this isn't like a physical book, if I want to actually, like have a physical
book that I'm going to work with, in my program, I need to create it down here. And we're actually
going to be creating something called an object. So here's a little terminology lesson, a class
is the specification, it's the blueprint, it's the template of a data type. So this
book class is the specification, it's the blueprint of a book inside of our program,
an object is an actual instance of that blueprint, or it's an actual instance of that class.
So an object is an actual book. So I'm going to create an object down here, we'll call
it a book object. And that means it's, it's an actual book that's going to have an actual
title, and actual author and an actual number of pages associated to it. And we can create,
you know, hundreds of these different objects, but just know that a class is the template,
it's the specification. And an object is an actual instance of that specification. So
it's an actual book with an actual title, author, and page. So let's go ahead and do
that. I'm just going to say book. And again, I'm basically just telling c++, what type
of data I want to create or what type of data I want to store. And then I'm going to give
this a name. So I'm just going to call it book one. So now we have this book inside
of our program, it's called book one. And what we want to do is start giving it some
attributes. So I want to say, book, one dot title. And we can actually give this a title.
So I can assign a value to book one for the title. So why don't we just say the title
is like Harry Potter. So this is going to be a Harry Potter book. And I can do the same
thing for author and four pages. So I can say book, one dot author, and I can just give
this an author. So it's JK Rowling. And we're going to give this a number of pages. So I
could say book, one dot pages, and this is going to be an integer. So let's say it has
like 500 pages. And so now I'm actually able to represent, and I'm able to work with a
book inside of my program. So again, this up here is a class. It's a template for what
a book is, this down here is an object, it's a physical book in our program that has actual
attributes. So it has this is the Harry Potter book, with the JK Rowling author and 500 pages.
So I'll show you guys what we can do, we can actually print out this information. So I
could say C out. And why don't we print out book one dot title. And so now I'm able to
store all of this information inside of this book, one object. So I'm basically able to
represent a book in my program, when I run this program, now, you'll see we're printing
out the title of the book, which is Harry Potter, I can do the same thing for like pages.
So we could print out the number of pages in book one, which is going to be 500. So
this is a really cool way for us to actually model a real world entity like a book inside
of our program. So remember, before, we didn't have a book data type, right, I had nothing
I could use to represent a book in my program. Now all of a sudden, I have one. So I can
actually represent a physical book in my program. And we can make as many of these as we wanted.
So I'm actually just going to copy this. And let's make another book. So let's say in addition
to this Harry Potter book, maybe we want to make another one. And I'm just going to call
this book two. So I'm going to change all of these. So now all of these are sets of
Book Two, and I'm going to change all these attributes. Instead of it being a Harry Potter
book. Why don't we make it a Lord of the Rings book, and the author is going to be token.
And let's say that this is like 700 pages. So now I have two books in my program, I have
book one. And I have Book Two, book one has all of these attributes associated to it,
Book Two, has all of these attributes associated to it. But both of these books are using this
same book template, right? They're using the same book class, this is just a specification
for what a book is. And down here, I was able to create individual instances of that specification.
In other words, I was able to create individual book objects. So I could also print out stuff
about book two. So now I could say like Book Two dot author, and this is going to print
out book twos author. So now it's token. So just like before, when we have like integers,
and you know, strings, and stuff like that. Now, in addition to those data types, we also
have a book. So I can represent a book, I can use a book, I can store it, I can, you
know, modify all its values and stuff like that. And, you know, down here, basically,
we're just defining the book and then we're giving it value. So I can say like, book one
title, and I can also change these so if I said book to title down here, I could change
it so I could change it to like Hunger Games or something. And now, Book Two title is going
to be updated. So these work just like normal variables would work. And you can see now
we're getting Hunger Games. So that's pretty cool. And honestly, this is just a, an introduction
into classes and objects. There's a lot more to learn about, there's a lot more to talk
about. But hopefully this makes sense, what you want to do is just play around with modeling
real world object. So in here, I modeled a book. So I created a book data type, but you
could create like a phone data type. If you create a like a keyboard data type, you can
create anything, you know, essentially, you're just taking a real world entity, breaking
it up into individual attributes like title, author, and pages, and then you can represent
it in your program. In this tutorial, I'm going to teach you guys how to use constructors
inside of c++ classes. Now, a constructor is a basically a special function that is
going to get called whenever we create a an object of a class. So let me show you guys,
basically how this works. So down here, or actually up here, I have this class, it's
called book. And if you follow along with the course, we created this class in the last
tutorial, and basically this book class is just sort of a blueprint or a specification
for what a book is inside of our program. So you know, a book has a title, has an author
and has pages awesome. So then down here, we actually created some book objects. And
an object is just an instance of a class. So we have book one, and book one has a title.
It's a Harry Potter book, and an author in pages, and all that stuff. So I'm going to
show you guys where constructors come into play. So a constructor, like I said, it's
essentially just a function that's going to get called whenever we create one of these
book objects. So up here, I'm actually going to go ahead and create a constructor. And
the way we can create we can create a constructor is just by essentially creating a function
for this program. So I'm just gonna say book. And I'm gonna make an open and close parentheses
and an open and close curly bracket. And essentially, what we have here is a constructor. So this
is a special function now, which is going to get called whenever we create a book object.
So let me prove that to you guys, I'm just going to print something out. And I'll just
say, creating objects. And then we also want to print a new line. So down here, I'm creating
two objects, I'm creating book one, and I'm creating Book Two, whenever I create a new
object, you guys are going to see that this function up here is going to get called. So
let me run this program. And you'll see over here, it says, creating object twice. So it
says creating objects. And that was when we made this line of code. And then down here,
it also says creating object. And that was when we created this second object. So we
created two objects. And this method, or this function got called twice. Hopefully that
makes sense. Now another cool thing about this book function is that it can accept parameters.
So I can come over here and we can say that this is going to accept a parameter like name.
And over here, I can just print out like, whatever the user passed it. And so now down
here, when we create these objects, we can pass values in so I could pass in like Harry
Potter, that's the name of this book. And we could pass in like, Lord of the Rings.
That's the name of this book, right? So now when I run my program, it's going to actually
be able to use those parameters. So instead of printing out like, creating object, it's
printing out the value that we passed into the constructor. Pretty cool, right? And constructors
are awesome, because we can use them when we create objects. So let me point something
out to you guys. And I'm actually just going to get rid of this stuff up here. So only
point something out when we wanted to create these objects, right. And when I wanted to
give them a bunch of initial information, so when I created book one, and Book Two,
I had to manually specify what the title was going to be, what the author was going to
be and what the pages were going to be. And it kind of took up a lot of time, right, it
takes a lot of time to have to manually type out book one dot title, book, one dot author.
And I have to do that for every single object that I create. Well, that gets really, really
tedious. And imagine if instead of just creating two objects, I wanted to create like 100 or
1000 objects like that would take up so many lines of code, I mean, just to create one
of these objects, took up four lines of code. We can actually use these constructors in
order to initialize our objects with information. So like when I create this book, one instead
of having to manually specify the title, the author and the pages. Instead, I could just
pass those values into the constructor, and the constructor could initialize the values
for us. So let me show you guys how we can do that up here. In our constructor, I'm going
to specify that this constructor is going to take three values. So this book constructor
is going to take a string title. And actually, we're just going to call this a title, it's
going to take a string, and we're going to call it a author. And it's going to take an
integer, we're just going to call it a pages. And I'm putting this a here, you don't have
to do that, I'm just doing it. So it's kind of easy for us to see what's going on, a is
just going to stand for arguments. So this will be like the title, that's an argument.
Alright, so down here, what I can do is I can actually assign the values of title, author
and pages to the values that we passed in. So down here, we're assigning the values of
title, author and pages two, all of this information. But instead of having to do it down here,
I could just do that up here in the constructor. So I could say that the title is going to
be equal to a title. So in other words, the title of the object, the title that we want
to store for this specific book, is going to be equal to the title that gets passed
in, I can do the same thing for the author. So I could say, author is going to be equal
to A author, and pages is going to be equal to A pages. And again, you don't have to name
these a title, a author a pages, you can name whatever you want. I'm just kind of doing
this. So it's more obvious as far as what's going on. So down here, what I can do now
whenever I create this object, I need to pass it a title and author and a number of pages.
So if I tried to run my program, right, now, you'll see we're getting an error, we're basically
getting an error, because we didn't pass in these values. So what I can do is I can actually
take the title, I can take the author, and I can take the number of pages, so 500, and
I can pass them into this constructor, then I can just get rid of all this code, because
we don't need it anymore. And I'll do the same thing for the Lord of the Rings book.
So I can, and we can pass in the number of pages. And so now we can get rid of all this
stuff. So we went from having eight lines of code to create two objects. So now we just
have two lines of code. And now when I run my program, we should be able to essentially
just give this object a bunch of initial information. So let's go ahead and print out this stuff.
So you can kind of see what happened. So I'm just going to see out while we see our book,
one dot title, and let's see what we get. So we should get Harry Potter, which we do.
So we did exactly what we were doing before, except we're able to do it a lot easier and
a lot cleaner now, by using this constructor. So this was a very, very powerful tool for
us to use. Now, I also do want to point out, we can still modify these. So I could still
say like book one title. And I could change the title. So I can change the title to whatever
I want. And it'll be updated. really all we're doing with this constructor here is we're
just making it a lot easier. So we're essentially just making it easier for us to initialize
a object with different values. So that's sort of the basics of using constructors.
And I'll show you guys one more thing we can do, you can actually create multiple constructors.
So I can create this constructor that will essentially just allow us to take in a title
and author and a number of pages. But let's say that for some books, we wouldn't want
to include one of those attributes, I can make another constructor over here. And this
constructor, for example, won't take in any parameters. And I can just give these values
like initial value. So I can basically just say like title is equal to no title. Author
is equal to no author. And we could also say like pages is equal to zero. So this is basically
just giving this object like some initial information if we don't pass anything it and
so now, what I could do is I can come down here and I can create another book. So I can
say, like book, and we'll call this book three. And I now I don't have to pass in this information.
So if I want, I can just do that. And we can print out like Book Three dot title, and it's
going to be that title that we gave it and this needs to be capital whoops. So now you
see we get no title. So a lot of times, people will create multiple constructors, you're
basically giving the user multiple ways that they can create your objects. But I'd say
the most common scenario is going to be this where you pass in all of the attributes, and
then they basically just get assigned. So that's the basics of constructors. Hopefully
that makes sense. constructors are very useful, so you're definitely going to want to use
them in your c++ classes. In this tutorial, I'm going to talk to you guys about object
functions in c++. You'll also hear people refer to these sometimes as like instance
functions. And essentially what this is, is it's a function that we can put inside of
one of our classes and then And the different objects of that class can use that function
in order to either you know, find out information about themselves, or modify information about
themselves. So I'm just gonna give you guys a sort of introduction into how to do this.
Over here, you'll see that I actually set up a class. And this class is called student.
And this is essentially just a template for like what a student is going to be in our
program. And I've said down here that a student is going to have a name, a student is going
to have a major, and a student is also going to have a GPA. So that information is sort
of like what defines a student in our program. And then down here, I created a constructor,
which basically just allows whoever's creating these objects owner to pass in some initial
information. And we're passing in the name of major and then also the GPA. So I'm essentially
just using this constructor as I normally would any other constructor. So this is our
student class. And then down here, in my main method, you'll see that I actually have a
couple students. So I created a student called student one, his name is Jim, he's a business
major, and his GPA is 2.4. And then I have another student student two, her name is Pam.
She's an art major, and she has a GPA of 3.6. So these are now two students that I'm working
with. And I'm sort of representing inside of my programs. That's awesome. So let me
show you guys, how we can use these different object functions. Let's say that we wanted
a way to figure out whether or not one of these students was on the honor roll. Right.
So let's say that at the school that these students attend, there's an honor roll, right,
and let's say that the rules are being on the honor roll as you need to have a GPA of
3.5 or above. So if you have a GPA of 3.5 or greater, that means that you're on the
honor roll. And let's say that we wanted to have an easy way to figure out whether or
not a specific student was on the honor roll. Well, what I could do is I could actually
create a function up here in my student class, which each of the objects can use to tell
if they were on the honor roll or not. So what I'm going to do is I'm going to go down
here below the constructor, and I can basically just create a function like I normally would,
so we can give this a return type. And I'm going to give this a Boolean return type.
And I'm going to name this function has honors, and this function is basically going to return
a true or a false value, it will return true if the student has honors right? No return
true, if the student has a GPA of 3.5 or greater. If they don't, it's going to return false.
So over here, we're not going to have to take in any information, we don't need any parameters,
I'm going to make an open and closed curly bracket. Now down here inside of this function,
we need to figure out if the object has honors. So I can just use an if statement, I'm just
gonna say if, and I'm basically just gonna say if GPA is greater than 3.5. Or actually,
if GPA is greater than or equal to 3.5, then we're gonna come down here, and we can just
return true, because if this code gets executed, that means that they have a GPA of 3.5 or
greater. And then otherwise, if that's not the case, we can just return false. So that's
essentially all this little function is going to do. It's very simple if they have a GPA
3.5 or greater, turn true, otherwise, return false. Now, what's cool about this function
is each of the objects that I create can call this function, and depending on their specific
GPA, it's going to return a different answer. So for example, let's go ahead and call this
on our first student gym. So I can just say, C out I just want to print out the answer.
And I can just say, student, one dot has honors. So now if I want to figure out whether or
not Jim has honors, I can just call this function, I can say student one dot has honors. And
now this is going to print out whether or not Jim has honors. So you'll see over here,
we're printing out a zero. And just a tidbit. Whenever you print out Boolean values, if
it's a false, it's going to get printed out as a zero. If it's a true, it's going to get
printed out as a one. So the fact that we're seeing a zero here means that student one
doesn't have honors. And we can do the same thing for Pam. So we can do the same thing
with our other students. I could say student to dot has honors. And now this should be
true because Pam has a GPA of 3.6. So Pam is going to have honors. What's cool about
doing this is that this function is going to be using different information depending
on which object is calling it. So when the gym object calls it, the GPA is Jim's GPA.
When the PAM object calls it, the GPA is Pam's GPA. So we can define a general function over
here in our class. And depending on the object that calls it, it's going to be giving or
doing different things. So the GPA is going to be different, depending on if Jim's calling
it or if Pam is calling it and that's kind of why these are cool so you can make awesome
These little functions. And generally people will make these to get information about the
object. So for example, figure out whether or not they have honors, or modify values.
And in future tutorials, we're going to look at functions which are going to be modifying
the values in our classes. But hopefully that kind of gives you an idea of what you can
do with these. So you know, I did a lot of cases, you're going to want to have different
functions inside of your classes that are going to do stuff. Now I do want to just point
out one more reason why these are cool. So let's say that I have this program written.
And, you know, I'm using all these different students. And maybe I have a program that
like, calculates who's on the honor roll or something. Well, let's say that one day, the
Dean of the School comes to me and he's like, Hey, Mike, we're going to change the qualification
for honors. So now, instead of everybody with a 3.5, and greater is going to have honors,
we're just going to say everybody with a 2.0 and greater is going to have honors, in order
for me to make that change in my program. In other words, in order for me to update
that information, all I have to do is go over here and change this to 2.0. And now all of
the code in my program is still going to work. And these has honors are still going to work.
But now the bar for having honors is going to be lowered. So I can say student one has
honors. And now this is going to be true, because we changed the qualification. So now
we get a one. And that's kind of why these are powerful, you can kind of adjust different
information and you know, control different things about the overall class and about every
instance of the class using these functions. So hopefully that is clear. Hopefully, you
have an idea now of what you can do with these different objects functions. In this tutorial,
I'm going to talk to you guys about getters and setters in c++ classes. Now, getters and
setters are extremely useful. And basically, they allow you to control the access to the
different attributes and different elements inside of your c++ classes. So I'm going to
show you guys the basics of using c++. In order to do that, we're going to use a little
example. So up here, I have a class that I created, it's called movie. And this is basically
just like allowing us to represent a movie inside of our program. So I have a few different
attributes, the movie is going to have a title, it's going to have a director, it's also going
to have a rating. So those are three different attributes of a movie, right, we can basically
say like, this is our movie, this is what it's going to be, that's what it's going to
have. And down here we have a constructor. So I'm just passing in the title, the director,
and then also the rating. And then over here, we're assigning those values to the values
inside of the object. This is all pretty standard stuff. And if you've been following along
with the course up to this point, this should kind of make sense. You know what I'm doing
over here, I'm essentially just defining a class, movie data type. And down here, I actually
created a movie. So I created a movie, and it's called Avengers and the title is The
Avengers director is Joss Whedon. And the rating is pG 13. So um, I'm creating an actual
movie. And you'll see down here, I can print out the rating. So why don't we run our program,
we'll just sort of get on the same level. So over here, I have pG 13. So it's printing
out the rating, everything works, everything looks good. Now, here's the thing, a lot of
times in c++, when we're creating something like a class up here, like this movie, we're
going to want to be able to control what information can be stored for a particular movie. And
let me give you an example. So down here, I have this rating as pG 13. Right. And generally
for movies, there's, you know, a certain number of ratings that you can have, so it'd be like
g PG, PG, 13, R, and then nr, right, so not rated. So just for our purposes, let's say
that these are all the ratings that you can give to move PG, PG, PG, 13, Rn, nr, right?
I'm sure there's some more that we could think of. But let's just say that those are the
ratings that we're going to say are valid for a movie, those are the ratings that are
going to be allowed for a particular movie. Well, over here, I'm inserting pG 13. But
let's say I wanted to instead enter in something else. There's nothing stopping me from just
entering in nonsense like dog, but there's nothing that's stopping me from just typing
in some nonsense rating there. And then running the program and being able to store it inside
of my movie, right I In other words, I can set the rating equal to dog, even though that's
not technically like one of the official ratings that we can have. And there's a lot of circumstances
where there's going to be things like this, for example, you know, valid ratings that
you're going to want to enforce. In other words, like when you're writing this program,
you might not want an object, you might not want a movie object to be created. That's
not using a valid rating. Like you wouldn't want this to be able to happen down here.
You wouldn't want them to be able to put a rating in as dogs. So I'm gonna show you guys
how we can And essentially just enforce that how we could make it so that the user can
only create an object a movie object with a valid rating. And to do that, we can use
something called getters and setters. Now, the first thing that I'm going to do, after
I turn that back, is I'm going to head up here into my class. So up here in my movie
class, and I want to show you guys, one thing you'll see up here, I have this keyword public.
And essentially, when I say public, and I put all this stuff underneath public, what
that means is that all of this stuff is public. And basically, when something's public, it
means that any other program any other code can access it. So essentially, any code outside
of this class is able to access the title of the movie, the director of the rating and
the constructor. So down here, I'm able to print out Avengers dot rating, because rating
is public, right? So I can print this out, because it's underneath this little public
keyword. But there's another keyword that we can use in c++, which is called private.
And I can do the same thing as I did with public, I can just say private, and any attributes,
any variables, any functions, anything that I put underneath this private keyword, is
actually going to be private. So for example, if I was to take this string rating, and I
was to put this under here, under this private, what this means is now only code inside of
this movie class is able to access the rating attribute, only code that's inside the movie
can access the rating. So if I was to come down here now and try to print out Avengers
dot rating, I'm not going to be able to do that anymore. And you're going to see that
we're going to get an error. So you can see this highlights in red basically telling us
that you can't print out Avengers dot rating, because it's private, so I no longer have
access to the rating inside of my main function. Now one thing I will point out is I have access
to the rating here in the constructor. That's because the rating variable, the rating attribute
is in the same class as this constructor, so it's able to access it. But this main function
isn't able to access it in any code inside the main function can't, because it's not
inside of that class. So that's basically the difference between public and private.
And we can leverage public and private in order to control what ratings are able to
get set for this movie. So let me show you guys how we can do this, the first thing I
want to do is, underneath this public block, I'm going to create a public function, and
I'm going to call it set rating. So actually, this is going to be void. And I'm just going
to call it set rating. And this is going to take as a parameter, it's going to take one
value, it's going to be a string, a rating. So this is going to take a rating as a parameter
down here, inside of this set rating function, I'm basically going to say rating is equal
to A rating. So now whenever I want to give a value to the rating, I'm going to make it
so we have to go through this set rating function. So over here, instead of saying rating is
equal to A rating, on set, I'm just going to say, set rating, and I'm going to pass
in a rating. And so now whenever we set the rating, it's going to go through this set
rating function. And for example, if I wanted to modify the rating down here, so if I wanted
to say like Avengers dot rating is equal to dog, I'm not going to be able to do this again,
because rating is private, so I can't access it over here. But if I want to modify the
rating, I can just go through this set rating function, because it's public. So over here,
if I wanted to modify the rating, instead of saying Avengers dot rating, I could say
Avengers dot set rating, and I can pass into this as a parameter, dog. Alright, so now
anytime we're setting the rating, either up here in the constructor, or down here in the
actual program, we have to go through this set rating function. And that's going to be
really useful. So essentially, what we can do now is we can set up some rules. So I can
set up some rules inside of this set rating function for what ratings are going to be
valid. So I'm going to go ahead and do that. Essentially, what I'll do is I'll create an
if statement. And if the rating that gets passed in is one of the valid ratings like
g PG, PG, 13, r nr, then we'll let them set it. Otherwise, we'll be able to essentially
like throw an error or we'll be able to say like, Hey, this is an invalid rating. So down
here, I'm just going to create an if statement. And I'm just gonna say if. And I'm basically
just going to check to see if the rating is one of the valid rating so we can check to
see if a rating is equal to G or a rating is equal to P And I can keep doing this for
each of the valid ratings. So I'll keep doing this over here. And I'm just gonna say, or
a rating is equal to pG 13. Or a rating is equal to R. And then there's one more, which
is going to be or a rating is equal to nr. So basically, what I'm doing is I'm creating
this long winded if statement. And it's checking all of these conditions. So it's checking
to see if a rating is G, or if it's equal to PG, or if it's equal to pG 13, or R or
Finally, nr. Now, if it's equal to one of those, right, if it's equal to one of those
valid ratings, then we can just go ahead and set it normally. So I could say like rating
is equal to A rating, right? Because they entered in a valid rating, so it's going to
be fine. But here's the thing, if they didn't enter in a valid rating, that means that we're
not going to be able to set it as the rating that they entered, so I can say else. And
otherwise, why don't we just go ahead and set rating equal to an R. So we'll say that
if they entered in an invalid rating, like they tried to set an invalid rating, for the
rating for the movie, we're just going to go ahead and set it to nr because they didn't
enter in a valid rating. So it's just going to be not rated. So here's the thing. Now
whenever we want to set the rating, we have to go through this set rating function. So
for example, I can come over here and I can say Avengers, set rating and dog. And then
if I printed out the rating, it's actually gonna say nr, because they entered in an invalid
rating, it's just going to default to nr. But here's the other problem is when I can't
actually print out the rating. So I can't Access Avengers dot rating, because it's private,
remember, so what we can do is we can create another function up here, and this one is
going to be a string, so it's going to return a string. And I'm just going to call it get
rating. And it's not going to take any parameters, it's just going to return rating, so it'll
just return the rating. And so now if I wanted to print this out, I could say Avengers dot
get rating, and I'll be able to print it out. So let's go ahead and see what happens. So
down here, I set Avengers rating equal to dog. That's an invalid rating. So now when
I get the rating, and I print it out, we should just print out nr. And actually looks like
I have a typo here. So I forgot to put a double equals in there. Let me see if I did that
over here, too. Nope. Okay, so we should be able to run this now. Yeah, so down here,
you'll see that we're printing out an R. So I tried to set the rating u equal to dog,
that was an invalid rating. So when I went to get it, it's just giving me an R. And that's
going to work for anything. So for example, over here, when I just first created this,
I set pG 13. That's a valid rating, right, that is one of the official ratings that we
can use. So when I run this, it's going to have that it'll have a rating of pG 13. But
if I tried to set this to like pG 15, or something, that's not a valid rating, right. So when
I run the program, it's going to basically say that it's not rated because we didn't
enter in a valid rating. And you know, you can essentially do whatever you wanted there.
The point that I'm trying to make though, is that there's going to be certain times
where you want to control what values are, you know how the user can interact with the
attributes of a class or of an object. In our case, we wanted to be able to restrict
what types of ratings were able to be stored inside of a movie. So I was able to set the
attribute equal to private, which meant nobody could access it directly. They couldn't just
say like, hey, the rating is equal to this, or the ratings equal to that. Instead, if
they wanted to set a rating, they had to go through the set rating function. And they
had to go through our little if statement here. And that is an awesome way to control
access to the individual elements, or the individual attributes in a specific object.
In this tutorial, I'm going to talk to you guys about inheritance in c++. inheritance
is basically where we can define a class. And then we can define other classes. And
those classes can extend the functionality or they can inherit all the functionality,
all the attributes of that original class. So the easiest way for me to explain this
is just to kind of show you guys an example. So over here in my program, I created a class
and it's called the chef class. Basically, this class is like modeling like a chef in
our program. And there's a couple different functions that the chef class can perform.
The chef can make chicken, the chef can make salad and the chef can make a special dish.
Basically each of these functions just prints out like what it's doing. So this one says
the chef makes chicken the chef makes salad. Chef makes barbecue ribs. Very simple class.
And down here you'll see I'm actually creating an instance of this Chef class, and called
chef and down here I'm telling the chef to make chicken. So let's run the program. And
we'll see what happens. So when I run the program, you'll see, it prints out the chef
makes chicken. Awesome. So we have this chef class. And let's say that I'm running my program.
And I'm thinking to myself, like, Hmm, I think in addition to representing just a normal
generic chef, I also want to represent an Italian chef. So what I'm going to do is I'm
going to go over and I'll actually just create another class. So I'm just going to say class.
And instead of creating a chef class, I'm going to create an Italian chef class. So
I'll say, Italian chef. And let's say for our purposes, when we're creating this Italian
chef class, we want the Italian chef to be able to do everything that the normal chef
can do. So this Italian chef can make chicken can also make salad and can also make a special
dish. But in addition to that, the Italian chef will be able to do a bunch of other stuff,
well, we can actually use inheritance in order to build this Italian chef. Because the Italian
chef is going to be able to do everything that the normal chef could do, like make chicken,
make salad and make a special dish, I can actually inherit all of these functions. From
the chef class in my new Italian chef class, I'll show you guys how to do that, it's actually
super easy. All we have to do is come down here. And I'm just going to make a colon.
And then I can just say public and chef. So this is referring to the class that I want
to inherit from. And now what's cool about this is this Italian chef is going to have
access to all of the functionality up here in this chef class. So it's basically going
to inherit all of those functions. So I'll show you if I was to come down here and create
an Italian chef. So if I just said, Italian chef, we'll just call it Italian chef. I could
then say Italian chef dot make chicken. And even though I didn't specify anything up here,
even though this class is technically empty, even though I didn't specify a make chicken
function, or make salad or make special dish function up here, I'm still able to call make
chicken on Italian chef. So if I was to run this program, now, you'll see it says the
chef makes chicken. So I'm able to call that function on the normal chef and the Italian
chef, essentially what's happening is the Italian chef down here is inheriting all of
this functionality. So actually, just to sort of demonstrate this even further, if I came
down here and I change this to chef makes yummy chicken. Now when I run my program,
again, you'll see that the Italian chef is also going to be able to make yummy chicken.
So it's basically inheriting this function from the chef class. And what's cool about
inheritance is that not only can we inherit all that in functionality, but we could extend
on it. So the Italian chef isn't just going to be able to do everything the chef does.
Italian chef can also do other stuff. So the Italian chef could also like make pasta. And
down here, we can just basically print out like the chef makes pasta. So in addition
to being able to make everything that the normal chef can make, this Italian chef can
also make pasta. So I can come down here and say make pasta. But it's important to note
that this normal chef can't make pasta. So if I tried to call pop make pasta on the normal
chef, you'll see we're going to get an error. So you'll see over here, it's not going to
be able to run the program. And actually, it looks like I had an error up here. So this
should be a lesson sign. Alright, so now we'll get an error down by the other chef. Yeah,
so now we're getting this error, which is basically saying this, this chef can't make
pasta, but the chef could make chicken. And now that you'll see the Italian chef is gonna
make pasta and the normal chefs gonna make chicken. And actually one more thing I forgot,
we need to put public over here. I keep forgetting to do that. So I'm gonna say public. And then
this is basically going to specify that this function is going to be public. So now we
should be able to run our program. And you'll see it says the chef makes yummy chicken and
the chef makes pasta. So both of our chefs are able to do different things. And that's
pretty cool. And the other cool thing I can do with inheritance is I can actually override
certain functions. So you'll notice up here, the normal chef has this make special dish
function. And this chef is making barbecue ribs as a special dish. But let's say that
the Italian chef was going to have a different special dish. Well, I can do something called
overriding a function. So I can actually copy this function from up here. And I can paste
it down here into my Italian chef. And essentially now this is going to override the function
from up here. So instead I'm making barbecue ribs we could have him make like chicken parm.
So now this Italian chef is going to be making chicken parm while the normal chef will make
barbecue ribs. So if I came down here and I said make special dish on the normal chef
and I said, Make spicy special dish on the Italian chef. Now these are going to be two
different things because the Italian chef overrode that original function. So chef makes
chicken parm and the chef makes barbecue ribs. So that's kind of how overriding can be useful.
Like if you're inheriting a function and you want to change, like what it's doing, or modify
what it's doing in the other class, you can do that. Now, just a quick terminology. So
we would call this chef class, a superclass. And then we would call this Italian chef class
a subclass, because the Italian chef is inheriting from the chef class, which is the superclass
and that is essentially, the basics of inheritance is you're essentially creating a class and
you're inheriting all the functionality from another class inside of it. And then you can
do things like add extra functions, you can add on to it, or you can override the functions
that you inherit. Hey, thanks for watching. If you enjoyed the video, please leave a like
and subscribe.