这仅仅是我个人的学习笔记,没有什么干货,可能会有写错的信息,不推荐观看学习!
Welcome!
-
Recall that machines only understand binary. Where humans write source code, a list of instructions for the computer that is human readable, machines only understand what we can now call machine code. This machine code is a pattern of ones and zeros that produces a desired effect.
-
It turns out that we can convert source code into
machine code
using a very special piece of software called a compiler. Today, we will be introducing you to a compiler that will allow you to convert source code in the programming language C into machine code.
Hello World
Notice that there is a file explorer on the left side where you can find your files. Further, notice that there is a region in the middle called a text editor where you can edit your program. Finally, there is a command line interface
, known as a CLI, command line, or terminal window where we can send commands to the computer in the cloud.
- We will be using three commands to write, compile, and run our first program
code hello.c
make hello
./hello
The first command, code hello.c
creates a file and allows us to type instructions for this program. The second command, make hello
, compiles the file from our instructions in C and creates an executable file called hello
. The last command, ./hello
, runs the program called hello
.
- We can build your first program in C by typing
code hello.c
into the terminal window. Notice that we deliberately lowercased the entire filename and included the.c
extension. Then, in the text editor that appears, write code as follows:
#include <stdio.h>
int main(void)
{
printf("hello, world\n");
}
Note that every single character above serves a purpose. If you type it incorrectly, the program will not run. printf
is a function that can output a line of text. Notice the placement of the quotes and the semicolon. Further, notice that the \n
creates a new line after the words hello, world
.
- Clicking back in the terminal window, you can compile your code by executing
make hello
. Notice that we are omitting.c
.make
is a compiler that will look for ourhello.c
file and turn it into a program calledhello
. If executing this command results in no errors, you can proceed. If not, double-check your code to ensure it matches the above. - Now, type
./hello
and your program will execute sayinghello, world
. - Now, open the file explorer on the left. You will notice that there is now both a file called
hello.c
and another file calledhello
.hello.c
is able to be read by the compiler: It’s where your code is stored.hello
is an executable file that you can run, but cannot be read by the compiler.
Functions
- In Scratch, we utilized the
say
block to display any text on the screen. Indeed, in C, we have a function calledprintf
that does exactly this. - Notice our code already invokes this function:
printf("hello, world\n");
Notice that the printf function is called. The argument passed to printf is ‘hello, world\n’. The statement of code is closed with a ;
.
#include <stdio.h>
int main(void)
{
printf("hello, world\n");
}
- The statement at the start of the code
#include <stdio.h>
is a very special command that tells the compile that you want to use the capabilities of a library calledstdio.h
, a header file. This allows you, among many other things, to utilize theprintf
function. You can read about all the capabilities of this library on the Manual Pages. The Manual Pages provide a means by which to better understand what various commands do and how they function. - Libraries are collections of pre-written functions that others have written in the past that we can utilize in our code.
Variables
- Recall that in Scratch, we had the ability to ask the user “What’s your name?” and say “hello” with that name appended to it.
- In C, we can do the same. Modify your code as follows:
#include <stdio.h>
#include <cs50.h>
int main(void)
{
string answer = get_string("What's your name? ");
printf("hello, %s\n", answer);
}
The get_string
function is used to get a string from the user. Then, the variable answer
is passed to the printf
function. %s
tells the printf
function to prepare itself to receive a string
.
-
answer
is a special holding place we call a variable.answer
is of typestring
and can hold any string within it. There are many data types, such asint
,bool
,char
, and many others. -
%s
is a placeholder called a format code that tells theprintf
function to prepare to receive astring
.answer
is thestring
being passed to%s
. -
printf
allows for many format codes. Here is a noncomprehensive list of ones you may utilize in this course:
%c
%f
%i
%li
%s
%s
is used for string
variables. %i
is used for int
or integer variables. You can find out more about this on the Manual Pages
Conditionals
- In C, you can assign a value to an
int
or integer as follows:
int counter = 0;
Notice how a variable called counter
of type int
is assigned the value 0
.
- C can also be programmed to add one to
counter
as follows:
counter = counter + 1;
Notice how 1
is added to the value of counter
.
- This can be represented also as:
counter = counter++;
Notice how 1
is added to the value of counter
. However the ++
is used instead of counter + 1
.
- You can also subtract one from
counter
as follows:
counter = counter--;
Notice how 1
is removed to the value of counter
.
#include <cs50.h>
#include <stdio.h>
int main(void)
{
// Prompt user to agree
char c = get_char("Do you agree? ");
// Check whether agreed
if (c == 'Y' || c == 'y')
{
printf("Agreed.\n");
}
else if (c == 'N' || c == 'n')
{
printf("Not agreed.\n");
}
}
Notice that single quotes are utilized for single characters. Further, notice that ==
ensure that something is equal to something else, where a single equal sign would have a very different function in C. Finally, notice that ||
effectively means or.
Loops
- We look at a few examples from Scratch. Consider the following code:
int counter = 3;
while (counter > 0)
{
printf("meow\n");
counter = counter - 1;
}
Notice that his code assigns the value of 3
to the counter
variable. Then, the while
loop says meow
and removes one from the counter for each iteration. Once the counter is not greater than zero, the loop ends.
- Your
meow
function can be further modified to accept input:
#include <stdio.h>
void meow(int n);
int main(void)
{
meow(3);
}
// Meow some number of times
void meow(int n)
{
for (int i = 0; i < n; i++)
{
printf("meow\n");
}
}
Operators and Abstraction
- You can implement a calculator in C. In your terminal, type
code calculator.c
and write code as follows:
#include <cs50.h>
#include <stdio.h>
int main(void)
{
// Prompt user for x
int x = get_int("x: ");
// Prompt user for y
int y = get_int("y: ");
// Perform addition
printf("%i\n", x + y);
}
Notice how the get_int
function is utilized to obtain an integer from the user twice. One integer is stored in the int
variable called x
. Another is stored in the int
variable called y
. Then, the printf
function prints the value of x + y
, designated by the %i
symbol.
- Operators refer to the mathematical operations that are supported by your compiler. In C, these mathematical operators include:
+
for addition-
for subtraction*
for multiplication/
for division%
for remainder
Comments: