C BASICS
Content
C Lang Intro
Flow Control
Loops
Arrays
Example: Bubble sort
Example: Sieve of Eratosthenes
C Lang Intro
C Lang Intro
- Flexible & compact lang
- From operating systems to games
- Basis for more advanced langs
- Lang defined by an international standard (C11)
- Some elements in C11 optional
- C11 also defines a standard library for C
- Common constants, symbols, functions, etc.
- Optional extensions to C lang
- Machine-dependet facilities implemented in machine-independet form (e.g. I/O)
- Standard library defined by a set of header files (.h)
- App dev includes the according headers
Compiler & Linker
-
Compiler converts source code into machine lang
-
Detects and reports errors
-
Compiler outputs object code to object files (.obj, .o)
-
Compilation phases
-
Preprocessing phase: source code may be modified or added
- Actual compilation
-
- Linker
- Combines object files
- Adds required modules from std lib
- Links everything to an executable
- Also reports problems (reference errors)
C Development
- Build with command line
- Start - Visual Studio Tools
- Developer Command Prompt - cd to dev folder
- cl main.c (compiles and links main.c)
- Create C++ Project in Visual Studio
- File - New - Project
- Visual C++ - Empty Project
- Add a source file
First App
// main.c // This is a comment
#include <stdio.h> // This is a preprocessor directive
int main() // Define function main
{ // Mark beginning of main
printf("Hi, there!\n"); // Print string to console
return 0; // Return control to operating system
} // Mark end of main
Comments
// Comment 1: Compiler ignores everything with two slashes on a line
/* Comment 2 */
/*
* Comment 3:
* Compiler ignores everything between /* ... */
*/
Preprocessing Directives
#include <stdio.h> // # marks a preprocessing directive
#define PI 3.1415 // define a constant
- Preprocessing directive tells the compiler to do something before comping
- Include header file into, define constants, etc...
- Header file provides info about types and functions in the stdlib
- Compiler uses info to integrate predefined functions or other objects to the app
- E.g. info about printf(..)
Functions
int main() // Function header
{ // Opening brace
// ... // Function body
} // Closing brace
- Functions as named block of code that does something
- Every C app needs at least the main function
- Function signature
- defines return type
- defines function name
- defines input parameters with types
- Keywords (reserved words) used to describe types (int, void, etc.)
Variables and Memory
- App and data is stored in RAM
- 0/1 in memory
- 8 bit groups - byte
- Each byte is labeled with a number (address)
- 1KB - 1024bytes
- 1023 = 2^10 = 11 1111 1111
- Variables as piece of memory
- with one or more contiguous bytes
- 1, 2, 4 (32bit), 8, 16 bytes
- every variable has a name
- Use variable name to store and retrieve data
- Variable type specifies data size
Variables #2
- Variable naming
- May contain upper/lowercase letters
- digits
- underscore
- Must not begin with digit
- Different type of variables store different type of data
#include <stdio.h>
int main(void)
{
int salary; // Declare a variable called salary
salary = 10000; // Store 10000 in salary
printf("My salary is %d.\n", salary);
return 0;
}
Variables #3
- Variable declaration
- introduces a variable name
- Variable definition
- causes memory to be allocated
- Explicit/Implicit conversions
- compiler performs implicit conversions when no data loss
- explicit conversion needed if data loss possible
Flow Control
If Statement
if(a > b)
printf('a is greater b');
if(a < b)
printf('b is greater a');
else
printf('a is greater b');
if(a < b)
{
if(a < z)
{
// ...
}
else
{
// ...
}
}
else if(z < b)
{
// ...
}
else
{
// ...
}
Switch Statement
switch(customerId)
{
case 35:
printf('Customer id is 35');
break;
case 36:
// ...
break;
default:
// ...
break;
}
Loops
For Loop
for(int i = 0; i < 10; i++)
{
// ...
}
int count = 0;
for( ; count < 10; ++count)
{
// ...
}
for( ;; )
{
// ...
if(quitPrg)
break;
}
- i is defined once
- loop expression is evaluated in each iteration
- variable i is incremented in each iteration
While Loop
int i = 0;
int count = 10;
while(i < count)
{
//...
i++;
}
for( ;; )
{
// ...
while(true)
{
// ...
}
// ...
}
Arrays
Arrays
#include <stdio.h> // # marks a preprocessing directive
- Preprocessing directive tells the compiler to do something before comping
- Include header file into
- Header file provides info about types and functions in the stdlib
- Compiler uses info to integrate predefined functions or other objects to the app
- E.g. info about printf(..)
References
Beginning C (5th Edition)
Ivor Horton
Thank you for your attention!
C Basics
By dinony
C Basics
- 267