





































Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
Notes Provide you the basic of C programming with all Core Notes
Typology: Lecture notes
1 / 45
This page cannot be seen from the preview
Don't miss anything!
C is a general-purpose programming language created by Dennis Ritchie at the Bell Laboratories in 1972.
It is a very popular language, despite being old.
C is strongly associated with UNIX, as it was developed to write the UNIX operating system.
Why Learn C? It is one of the most popular programming language in the world If you know C, you will have no problem learning other popular programming languages such as Java, Pyt hon, C++, C#, etc, as the syntax is similar C is very fast, compared to other programming languages, like Java and Python C is very versatile; it can be used in both applications and technologies Difference between C and C++ C++ was developed as an extension of C, and both languages have almost the same syntax The main difference between C and C++ is that C++ support classes and objects, while C does not Get Started This tutorial will teach you the basics of C.
It is not necessary to have any prior programming experience.
Get Started With C To start using C, you need two things:
A text editor, like Notepad, to write C code A compiler, like GCC, to translate the C code into a language that the computer will understand There are many text editors and compilers to choose from. In this tutorial, we will use an IDE (see below).
C Install IDE An IDE (Integrated Development Environment) is used to edit AND compile the code.
Popular IDE’s include Code::Blocks, Eclipse, and Visual Studio. These are all free, and they can be used to both edit and debug C code.
Note: Web-based IDE’s can work as well, but functionality is limited.
We will use Code::Blocks in our tutorial, which we believe is a good place to start.
You can find the latest version of Codeblocks at http://www.codeblocks.org/. Download the mingw-setup.e xe file, which will install the text editor with a compiler.
C Quickstart Let’s create our first C file.
Open Codeblocks and go to File > New > Empty File.
Write the following C code and save the file as myfirstprogram.c (File > Save File as):
Syntax You have already seen the following code a couple of times in the first chapters. Let’s break it down to un
derstand it better:
Example #include <stdio.h>
int main() { printf("Hello World!"); return 0; }
Example explained Line 1: #include <stdio.h> is a header file library that lets us work with input and output functions, such as printf() (used in line 4). Header files add functionality to C programs.
Don’t worry if you don’t understand how #include <stdio.h> works. Just think of it as something that (almo st) always appears in your program.
Line 2: A blank line. C ignores white space. But we use it to make the code more readable.
Line 3: Another thing that always appear in a C program, is main(). This is called a function. Any code insi de its curly brackets {} will be executed.
Line 4: printf() is a function used to output/print text to the screen. In our example it will output "Hello Worl d!".
Note that: Every C statement ends with a semicolon ;
Note: The body of int main() could also been written as: int main(){printf("Hello World!");return 0;}
Remember: The compiler ignores white spaces. However, multiple lines makes the code more readable.
Line 5: return 0 ends the main() function.
Line 6: Do not forget to add the closing curly bracket } to actually end the main function.
Output (Print Text) To output values or print text in C, you can use the printf() function:
Example #include <stdio.h>
int main() { printf("Hello World!"); return 0; }
You can use as many printf() functions as you want. However, note that it does not insert a new line at the end of the output:
Example
cution when testing alternative code.
Comments can be singled-lined or multi-lined.
Single-line Comments Single-line comments start with two forward slashes (//).
Any text between // and the end of the line is ignored by the compiler (will not be executed).
This example uses a single-line comment before a line of code:
Example // This is a comment printf("Hello World!"); This example uses a single-line comment at the end of a line of code:
Example printf("Hello World!"); // This is a comment C Multi-line Comments Multi-line comments start with /* and ends with */.
Any text between /* and */ will be ignored by the compiler:
Example /* The code below will print the words Hello World! to the screen, and it is amazing / printf("Hello World!"); Single or multi-line comments? It is up to you which you want to use. Normally, we use // for short comments, and / */ for longer.
Good to know: Before version C99 (released in 1999), you could only use multi-line comments in C.
Variables are containers for storing data values, like numbers and characters.
In C, there are different types of variables (defined with different keywords), for example:
int - stores integers (whole numbers), without decimals, such as 123 or - float - stores floating point numbers, with decimals, such as 19.99 or -19. char - stores single characters, such as ’a’ or ’B’. Char values are surrounded by single quotes Declaring (Creating) Variables To create a variable, specify the type and assign it a value:
Syntax type variableName = value; Where type is one of C types (such as int), and variableName is the name of the variable (such as x or m yName). The equal sign is used to assign a value to the variable.
So, to create a variable that should store a number, look at the following example:
Example Create a variable called myNum of type int and assign the value 15 to it:
int myNum = 15; You can also declare a variable without assigning the value, and assign the value later:
Example // Declare a variable int myNum;
// Assign a value to the variable myNum = 15; Output Variables You learned from the output chapter that you can output values/print text with the printf() function:
Example printf("Hello World!"); In many other programming languages (like Python, Java, and C++), you would normally use a print functi on to display the value of a variable. However, this is not possible in C:
Example int myNum = 15; printf(myNum); // Nothing happens To output variables in C, you must get familiar with something called "format specifiers".
Format Specifiers Format specifiers are used together with the printf() function to tell the compiler what type of data the vari able is storing. It is basically a placeholder for the variable value.
A format specifier starts with a percentage sign %, followed by a character.
For example, to output the value of an int variable, you must use the format specifier %d or %i surrounde d by double quotes, inside the printf() function:
Example int myNum = 15; printf("%d", myNum); // Outputs 15 To print other types, use %c for char and %f for float:
Example // Create variables int myNum = 15; // Integer (whole number) float myFloatNum = 5.99; // Floating point number char myLetter = ’D’; // Character
// Print variables printf("%d\n", myNum); printf("%f\n", myFloatNum); printf("%c\n", myLetter); To combine both text and a variable, separate them with a comma inside the printf() function:
Example int myNum = 15; printf("My favorite number is: %d", myNum); To print different types in a single printf() function, you can use the following:
Example
x = y = z = 50; printf("%d", x + y + z); C Variable Names All C variables must be identified with unique names.
These unique names are called identifiers.
Identifiers can be short names (like x and y) or more descriptive names (age, sum, totalVolume).
Note: It is recommended to use descriptive names in order to create understandable and maintainable co de:
Example // Good int minutesPerHour = 60;
// OK, but not so easy to understand what m actually is int m = 60; The general rules for naming variables are:
Names can contain letters, digits and underscores Names must begin with a letter or an underscore (_) Names are case sensitive (myVar and myvar are different variables) Names cannot contain whitespaces or special characters like !, #, %, etc. Reserved words (such as int) cannot be used as names Real-Life Example Often in our examples, we simplify variable names to match their data type (myInt or myNum for int types, myChar for char types etc). This is done to avoid confusion.
However, if you want a real-life example on how variables can be used, take a look at the following, wher e we have made a program that stores different data of a college student:
Example // Student data int studentID = 15; int studentAge = 23; float studentFee = 75.25; char studentGrade = ’B’;
// Print variables printf("Student id: %d\n", studentID); printf("Student age: %d\n", studentAge); printf("Student fee: %f\n", studentFee); printf("Student grade: %c", studentGrade);
Data Types As explained in the Variables chapter, a variable in C must be a specified data type, and you must use a f ormat specifier inside the printf() function to display it:
Example // Create variables
int myNum = 5; // Integer (whole number) float myFloatNum = 5.99; // Floating point number char myLetter = ’D’; // Character
// Print variables printf("%d\n", myNum); printf("%f\n", myFloatNum); printf("%c\n", myLetter); Basic Data Types The data type specifies the size and type of information the variable will store.
In this tutorial, we will focus on the most basic ones:
Data Type Size Description int 2 or 4 bytes Stores whole numbers, without decimals float 4 bytes Stores fractional numbers, containing one or more decimals. Sufficient for storing 6-7 decima l digits double 8 bytes Stores fractional numbers, containing one or more decimals. Sufficient for storing 15 deci mal digits char 1 byte Stores a single character/letter/number, or ASCII values Basic Format Specifiers There are different format specifiers for each data type. Here are some of them:
Format Specifier Data Type Try it %d or %i int %f float %lf double %c char %s Used for strings (text), which you will learn more about in a later chapter Set Decimal Precision You have probably already noticed that if you print a floating point number, the output will show many digit s after the decimal point:
Example float myFloatNum = 3.5; double myDoubleNum = 19.99;
printf("%f\n", myFloatNum); // Outputs 3. printf("%lf", myDoubleNum); // Outputs 19. If you want to remove the extra zeros (set decimal precision), you can use a dot (.) followed by a number t hat specifies how many digits that should be shown after the decimal point:
Example float myFloatNum = 3.5;
printf("%f\n", myFloatNum); // Default will show 6 digits after the decimal point printf("%.1f\n", myFloatNum); // Only show 1 digit printf("%.2f\n", myFloatNum); // Only show 2 digits printf("%.4f", myFloatNum); // Only show 4 digits
Explicit Conversion Explicit conversion is done manually by placing the type in parentheses () in front of the value.
Considering our problem from the example above, we can now get the right result:
Example // Manual conversion: int to float float sum = (float) 5 / 2;
printf("%f", sum); // 2. You can also place the type in front of a variable:
Example int num1 = 5; int num2 = 2; float sum = (float) num1 / num2;
printf("%f", sum); // 2. And since you learned about "decimal precision" in the previous chapter, you could make the output even cleaner by removing the extra zeros (if you like):
Example int num1 = 5; int num2 = 2; float sum = (float) num1 / num2;
printf("%.1f", sum); // 2.
Constants If you don’t want others (or yourself) to change existing variable values, you can use the const keyword.
This will declare the variable as "constant", which means unchangeable and read-only:
Example const int myNum = 15; // myNum will always be 15 myNum = 10; // error: assignment of read-only variable ’myNum’ You should always declare the variable as constant when you have values that are unlikely to change:
Example const int minutesPerHour = 60; const float PI = 3.14; Notes On Constants When you declare a constant variable, it must be assigned with a value:
Example Like this:
const int minutesPerHour = 60;
This however, will not work:
const int minutesPerHour; minutesPerHour = 60; // error Good Practice Another thing about constant variables, is that it is considered good practice to declare them with upperca se. It is not required, but useful for code readability and common for C programmers:
Example const int BIRTHYEAR = 1980;
Operators Operators are used to perform operations on variables and values.
In the example below, we use the + operator to add together two values:
Example int myNum = 100 + 50; Although the + operator is often used to add together two values, like in the example above, it can also be used to add together a variable and a value, or a variable and another variable:
Example int sum1 = 100 + 50; // 150 (100 + 50) int sum2 = sum1 + 250; // 400 (150 + 250) int sum3 = sum2 + sum2; // 800 (400 + 400) C divides the operators into the following groups:
Arithmetic operators Assignment operators Comparison operators Logical operators Bitwise operators Arithmetic Operators Arithmetic operators are used to perform common mathematical operations.
Operator Name Description Example Try it
In the example below, we use the assignment operator (=) to assign the value 10 to a variable called x:
Example int x = 10;
float myFloat; double myDouble; char myChar;
printf("%lu\n", sizeof(myInt)); printf("%lu\n", sizeof(myFloat)); printf("%lu\n", sizeof(myDouble)); printf("%lu\n", sizeof(myChar)); Note that we use the %lu format specifer to print the result, instead of %d. It is because the compiler expe cts the sizeof operator to return a long unsigned int (%lu), instead of int (%d). On some computers it might work with %d, but it is safer to use %lu.
Booleans Very often, in programming, you will need a data type that can only have one of two values, like:
YES / NO ON / OFF TRUE / FALSE For this, C has a bool data type, which is known as booleans.
Booleans represent values that are either true or false.
Boolean Variables In C, the bool type is not a built-in data type, like int or char.
It was introduced in C99, and you must import the following header file to use it:
#include <stdbool.h> A boolean variable is declared with the bool keyword and can only take the values true or false:
bool isProgrammingFun = true; bool isFishTasty = false; Before trying to print the boolean variables, you should know that boolean values are returned as integers :
1 (or any other number that is not 0) represents true 0 represents false Therefore, you must use the %d format specifier to print a boolean value:
Example // Create boolean variables bool isProgrammingFun = true; bool isFishTasty = false;
// Return boolean values
printf("%d", isProgrammingFun); // Returns 1 (true) printf("%d", isFishTasty); // Returns 0 (false) However, it is more common to return a boolean value by comparing values and variables.
Comparing Values and Variables Comparing values are useful in programming, because it helps us to find answers and make decisions.
For example, you can use a comparison operator, such as the greater than (>) operator, to compare two v alues:
Example printf("%d", 10 > 9); // Returns 1 (true) because 10 is greater than 9 From the example above, you can see that the return value is a boolean value (1).
You can also compare two variables:
Example int x = 10; int y = 9; printf("%d", x > y); In the example below, we use the equal to (==) operator to compare different values:
Example printf("%d", 10 == 10); // Returns 1 (true), because 10 is equal to 10 printf("%d", 10 == 15); // Returns 0 (false), because 10 is not equal to 15 printf("%d", 5 == 55); // Returns 0 (false) because 5 is not equal to 55 You are not limited to only compare numbers. You can also compare boolean variables, or even special s tructures, like arrays (which you will learn more about in a later chapter):
Example bool isHamburgerTasty = true; bool isPizzaTasty = true;
// Find out if both hamburger and pizza is tasty printf("%d", isHamburgerTasty == isPizzaTasty); Remember to include the <stdbool.h> header file when working with bool variables.
Real Life Example Let’s think of a "real life example" where we need to find out if a person is old enough to vote.
In the example below, we use the >= comparison operator to find out if the age (25) is greater than OR eq ual to the voting age limit, which is set to 18:
Example int myAge = 25; int votingAge = 18;
printf("%d", myAge >= votingAge); // Returns 1 (true), meaning 25 year olds are allowed to vote! Cool, right? An even better approach (since we are on a roll now), would be to wrap the code above in an if...else statement, so we can perform different actions depending on the result:
Example Output "Old enough to vote!" if myAge is greater than or equal to 18. Otherwise output "Not old enough to vote.":
Note that if is in lowercase letters. Uppercase letters (If or IF) will generate an error.
In the example below, we test two values to find out if 20 is greater than 18. If the condition is true, print s ome text:
Example if (20 > 18) { printf("20 is greater than 18"); } We can also test variables:
Example int x = 20; int y = 18; if (x > y) { printf("x is greater than y"); } Example explained In the example above we use two variables, x and y, to test whether x is greater than y (using the > opera tor). As x is 20, and y is 18, and we know that 20 is greater than 18, we print to the screen that "x is great er than y".
The else Statement Use the else statement to specify a block of code to be executed if the condition is false.
Syntax if (condition) { // block of code to be executed if the condition is true } else { // block of code to be executed if the condition is false } Example int time = 20; if (time < 18) { printf("Good day."); } else { printf("Good evening."); } // Outputs "Good evening." Example explained In the example above, time (20) is greater than 18, so the condition is false. Because of this, we move on to the else condition and print to the screen "Good evening". If the time was less than 18, the program wo uld print "Good day".
The else if Statement Use the else if statement to specify a new condition if the first condition is false.
Syntax if (condition1) { // block of code to be executed if condition1 is true } else if (condition2) { // block of code to be executed if the condition1 is false and condition2 is true } else { // block of code to be executed if the condition1 is false and condition2 is false
Example int time = 22; if (time < 10) { printf("Good morning."); } else if (time < 20) { printf("Good day."); } else { printf("Good evening."); } // Outputs "Good evening." Example explained In the example above, time (22) is greater than 10, so the first condition is false. The next condition, in the else if statement, is also false, so we move on to the else condition since condition1 and condition2 is bot h false - and print to the screen "Good evening".
However, if the time was 14, our program would print "Good day."
Another Example This example shows how you can use if..else to find out if a number is positive or negative:
Example int myNum = 10; // Is this a positive or negative number?
if (myNum > 0) { printf("The value is a positive number."); } else if (myNum < 0) { printf("The value is a negative number."); } else { printf("The value is 0."); } C Exercises Test Yourself With Exercises Exercise: Print "Hello World" if x is greater than y.
int x = 50; int y = 10; (x y) { printf("Hello World"); }
// block of code to be executed if the condition is true } else { // block of code to be executed if the condition is false } Example int time = 20; if (time < 18) { printf("Good day."); } else { printf("Good evening."); } // Outputs "Good evening." Example explained In the example above, time (20) is greater than 18, so the condition is false. Because of this, we move on to the else condition and print to the screen "Good evening". If the time was less than 18, the program wo uld print "Good day".
The else if Statement Use the else if statement to specify a new condition if the first condition is false.
Syntax if (condition1) { // block of code to be executed if condition1 is true } else if (condition2) { // block of code to be executed if the condition1 is false and condition2 is true } else { // block of code to be executed if the condition1 is false and condition2 is false } Example int time = 22; if (time < 10) { printf("Good morning."); } else if (time < 20) { printf("Good day."); } else { printf("Good evening."); } // Outputs "Good evening." Example explained In the example above, time (22) is greater than 10, so the first condition is false. The next condition, in the else if statement, is also false, so we move on to the else condition since condition1 and condition2 is bot h false - and print to the screen "Good evening".
However, if the time was 14, our program would print "Good day."
Another Example This example shows how you can use if..else to find out if a number is positive or negative:
Example int myNum = 10; // Is this a positive or negative number?
if (myNum > 0) { printf("The value is a positive number."); } else if (myNum < 0) { printf("The value is a negative number.");
} else { printf("The value is 0."); } C Exercises Test Yourself With Exercises Exercise: Print "Hello World" if x is greater than y.
int x = 50; int y = 10; (x y) { printf("Hello World"); }
Switch Statement Instead of writing many if..else statements, you can use the switch statement.
The switch statement selects one of many code blocks to be executed:
Syntax switch(expression) { case x: // code block break; case y: // code block break; default: // code block } This is how it works:
The switch expression is evaluated once The value of the expression is compared with the values of each case If there is a match, the associated block of code is executed The break statement breaks out of the switch block and stops the execution The default statement is optional, and specifies some code to run if there is no case match