SlideShare a Scribd company logo
1 of 63
C/C++ Tutorial
CSU480
Who is the TA?
Name: Jingjing Duan
Office Hours: (might change)
Tue & Fri 2:00-4:00
Office: Room 266, WVH
Email: duanjj@ccs.neu.edu
Class web: www.ccs.neu.edu/course/csu480
Outline
 “Hello World" Program
 Data Types & Variables
 printf()
 Arithmetic & Logical
Operations
 Conditionals
 Loops
 Arrays & Strings
 Pointers
 Functions
 Command-Line Argument
 Data Structure
 Memory Allocation
 Programming Tips
 C vs. C++
 Books recommended
Hello World Program
 The source code
#include <stdio.h>
int main()
{
printf("Hello Worldn");
return(0);
}
Hello World Program
 How to compile?
$ gcc hello.c –o hello
gcc compiling command
hello.c source file
hello compiler-generated executable file
Note: the default output filename is “a.out”
 How to execute?
./hello
“./ ” indicates the following file “hello” resides under the
current directory.
Hello World Program
Q: why “.” is not included in $PATH
environment variable?
Hello World Program
A: security consideration.
Command Location Comment
ls /bin/ls provided by the
system
ls current directory virus
Name Description Size* Range*
char Character or small
integer
1 byte signed: -128 to 127
unsigned: 0 to 255
short int
(short)
Short integer 2 bytes signed: -32768 to 32767
unsigned: 0 to 65535
int Integer 4 bytes signed: -2147483648 to
2147483647
unsigned: 0 to 4294967295
long int
(long)
Long integer 4 bytes signed: -2147483648 to
2147483647
unsigned: 0 to 4294967295
float Floating point
number
4 bytes 3.4e +/- 38 (7 digits)
double Double precision
floating point number
8 bytes 1.7e +/- 308 (15 digits)
long
double
Long double
precision floating
point number
8 bytes 1.7e +/- 308 (15 digits)
Data types
 Variable Declaration
int length = 100;
char num = ‘9’; //The actual value is 57
float deposit = 240.5;
unsigned short ID = 0x5544;
Try the following statements, and see what happens
unsigned char value = -1;
printf(“The value is %d n”, value);
unsigned char value = 300;
printf(“The value is %d n”, value);
Result
Definition Memory layout Display comment
unsigned char
value = -1
11111111 255
unsigned char
value = 300
00101100 44 overflow
 Local variable
Local variables are declared within the body of a function, and can
only be used within that function.
 Static variable
Another class of local variable is the static type. It is specified by the
keyword static in the variable declaration.
The most striking difference from a non-static local variable is, a static
variable is not destroyed on exit from the function.
 Global variable
A global variable declaration looks normal, but is located outside any
of the program's functions. So it is accessible to all functions.
Variable types
 An example
int global = 10; //global variable
int func (int x)
{
static int stat_var; //static local variable
int temp; //(normal) local variable
int name[50]; //(normal) local variable
……
}
Variable Definition vs Declaration
Definition Tell the compiler about the variable: its type and
name, as well as allocated a memory cell for the
variable
Declaration Describe information ``about'' the variable,
doesn’t allocate memory cell for the variable
http://www-ee.eng.hawaii.edu/~tep/EE150/book/chap14/subsection2.1.1.4.html
printf()
The printf() function can be instructed to print
integers, floats and string properly.
 The general syntax is
printf( “format”, variables);
 An example
int stud_id = 5200;
char * name = “Mike”;
printf(“%s ‘s ID is %d n”, name, stud_id);
 Format Identifiers
%d decimal integers
%x hex integer
%c character
%f float and double number
%s string
%p pointer
 How to specify display space for a variable?
printf(“The student id is %5d n”, stud_id);
The value of stud_id will occupy 5 characters space in the
print-out.
 Why “n”
It introduces a new line on the terminal screen.
a alert (bell) character  backslash
b backspace ? question mark
f formfeed ’ single quote
n newline ” double quote
r carriage return 000 octal number
t horizontal tab xhh hexadecimal number
v vertical tab
escape sequence
Arithmetic Operations
Arithmetic Assignment Operators
Increment and Decrement
Operators
awkward easy easiest
x = x+1; x += 1 x++
x = x-1; x -= 1 x--
Example
 Arithmetic operators
int i = 10;
int j = 15;
int add = i + j; //25
int diff = j – i; //5
int product = i * j; // 150
int quotient = j / i; // 1
int residual = j % i; // 5
i++; //Increase by 1
i--; //Decrease by 1
 Comparing them
int i = 10;
int j = 15;
float k = 15.0;
j / i = ?
j % i = ?
k / i = ?
k % i = ?
 The Answer
j / i = 1;
j % i = 5;
k / i = 1.5;
k % i It is illegal.
Note: For %, the operands can only be integers.
Logical Operations
 What is “true” and “false” in C
In C, there is no specific data type to represent “true” and “false”. C
uses value “0” to represent “false”, and uses non-zero value to stand
for “true”.
 Logical Operators
A && B => A and B
A || B=> A or B
A == B => Is A equal to B?
A != B => Is A not equal to B?
A > B => Is A greater than B?
A >= B => Is A greater than or equal to B?
A < B => Is A less than B?
A <= B => Is A less than or equal to B?
 Don’t be confused
&& and || have different meanings from & and |.
& and | are bitwise operators.
Short circuiting
 Short circuiting means that we don't
evaluate the second part of an AND or OR
unless we really need to.
Some practices
Please compute the value of the following
logical expressions?
int i = 10; int j = 15; int k = 15; int m = 0;
if( i < j && j < k) =>
if( i != j || k < j) =>
if( j<= k || i > k) =>
if( j == k && m) =>
if(i) =>
if(m || j && i ) =>
int i = 10; int j = 15; int k = 15; int m = 0;
if( i < j && j < k) => false
if( i != j || k < j) => true
if( j<= k || i > k) => true
if( j == k && m) => false
if(i) => true
if(m || j && i ) => true
Did you get the correct answers?
Conditionals
 if statement
Three basic formats,
if (expression){
statement …
}
if (expression) {
statement …
}else{
statement …
}
if (expression) {
statement…
} else if (expression) {
statement…
} else{
statement…
}
 An example
if(score >= 90){
a_cnt ++;
}else if(score >= 80){
b_cnt++;
}else if(score >= 70){
c_cnt++;
}else if (score>= 60){
d_cnt++
}else{
f_cnt++
}
 The switch statement
switch (expression)
{
case item1:
statement;
break;
case item2:
statement;
break;
default:
statement;
break;
}
Loops
 for statement
for (expression1; expression2; expression3){
statement…
}
expression1 initializes;
expression2 is the terminate test;
expression3 is the modifier;
 An example
int x;
for (x=0; x<3; x++)
{
printf("x=%dn",x);
}
First time: x = 0;
Second time: x = 1;
Third time: x = 2;
Fourth time: x = 3; (don’t execute the body)
 The while statement
while (expression) {
statement …
}
while loop exits only when the expression is false.
 An example
int x = 3;
while (x>0) {
printf("x=%d n",x);
x--;
}
for <==> while
for (expression1;
expression2;
expression3){
statement…
}
expression1;
while (expression2)
{
statement…;
expression3;
}
equals
Arrays & Strings
 Arrays
int ids[50];
char name[100];
int table_of_num[30][40];
 Accessing an array
ids[0] = 40;
i = ids[1] + j;
table_of_num[3][4] = 100;
Note: In C Array subscripts start at 0 and end one less than
the array size. [0 .. n-1]
 Strings
Strings are defined as arrays of characters.
The only difference from a character array is, a symbol “0”
is used to indicate the end of a string.
For example, suppose we have a character array, char
name[8], and we store into it a string “Dave”.
Note: the length of this string 4, but it occupies 5 bytes.
D a v e 0
Functions
Functions are easy to use; they allow complicated programs to be broken
into small blocks, each of which is easier to write, read, and maintain.
This is called modulation.
 How does a function look like?
returntype function_name(parameters…)
{
local variables declaration;
function code;
return result;
}
 Sample function
int addition(int x, int y)
{
int add;
add = x + y;
return add;
}
 How to call a function?
int result;
int i = 5, j = 6;
result = addition(i, j);
Pointers
Pointer is the most beautiful (ugliest) part of C, but also
brings most trouble to C programmers. Over 90% bugs in
the C programs come from pointers.
“The International Obfuscated C Code Contest ”
(http://www.ioccc.org/)
 What is a pointer?
A pointer is a variable which contains the address in memory
of another variable.
In C we have a specific type for pointers.
 Declaring a pointer variable
int * pointer;
char * name;
 How to obtain the address of a variable?
int x = 0x2233;
pointer = &x;
where & is called address of operator.
 How to get the value of the variable indicated by the
pointer?
int y = *pointer;
33 22 00 00
0x5200 0x5203
0x5200
pointer
What happens in the memory?
Suppose the address of variable x is 0x5200 in the above
example, so the value of the variable pointer is 0x5200.
X
swap the value of two variables
Why is the left one not working?
swap
main
x, y
a, b
call swap(a, b) in main
x, y, a, b are
all local
variables
Why is the right one working?
 Pointers and Arrays
Pointers and arrays are very closely linked in C.
Array elements arranged in consecutive memory locations
 Accessing array elements using pointers
int ids[50];
int * p = &ids[0];
p[i] <=> ids[i]
 Pointers and Strings
A string can be represented by a char * pointer.
Char name[50];
name[0] = ‘D’;
name[1] = ‘a’;
name[2] = ‘v’;
name[3] = ‘e’;
name[4] = ‘0’;
char * p = &name[0];
printf(“The name is %s n”, p);
Note: The p represents the string “Dave”, but not the array
name[50].
Command-Line Argument
In C you can pass arguments to main() function.
 main() prototype
int main(int argc, char * argv[]);
argc indicates the number of arguments
argv is an array of input string pointers.
 How to pass your own arguments?
./hello 10
 What value is argc and argv?
Let’s add two printf statement to get the value of argc and
argv.
#include <stdio.h>
int main(int argc, char * argv[]);)
{
int i=0;
printf("Hello Worldn");
printf(“The argc is %d n”, argc);
for(i=0; i < argc; i++){
printf(“The %dth element in argv is %sn”, i, argv[i]);
}
return(0);
}
 The output
The argc is 2
The 0th element in argv is ./hello
The 1th element in argv is 10
The trick is the system always passes the name of the
executable file as the first argument to the main() function.
 How to use your argument?
Be careful. Your arguments to main() are always in string format.
Taking the above program for example, the argv[1] is string “10”,
not a number. You must convert it into a number before you can
use it.
Data Structure
A data structure is a collection of one or more variables, possibly of
different types.
 An example of student record
struct stud_record{
char name[50];
int id;
int age;
int major;
……
};
 A data structure is also a data type
struct stud_record my_record;
struct stud_record * pointer;
pointer = & my_record;
 Accessing a field inside a data structure
my_record.id = 10; “.”
or
pointer->id = 10; “->”
Memory Allocation
 Stack memory allocation
Non-static local variable is an example of stack memory
allocation.
Such memory allocations are placed in a system memory
area called the stack.
 Static memory allocation
Static local variable and global variable require static
memory allocation. Static memory allocation happens
before the program starts, and persists through the entire
life time of the program.
 Dynamic memory allocation
It allows the program determine how much memory it
needs at run time, and allocate exactly the right amount of
storage.
The region of memory where dynamic allocation and
deallocation of memory can take place is called the heap.
Note: the program has the responsibility to free the
dynamic memory it allocated.
Memory arrangement
 Functions for the dynamic memory allocation
void *malloc(size_t number_of_bytes);
allocates dynamic memory
size_t sizeof(type);
returns the number of bytes of type
void free(void * p)
releases dynamic memory allocation
 An example of dynamic memory allocation
int * ids; //id arrays
int num_of_ids = 40;
ids = malloc( sizeof(int) * num_of_ids);
…….. Processing …...
free(ids);
 Allocating a data structure instance
struct stud_record * pointer;
pointer = malloc(sizeof(struct stud_record));
pointer->id = 10;
Never calculate the size of data structure yourself. The
reason is the size of data types is machine-dependent. Give
it to sizeof() function.
size of int
32-bytes machines 32
64-bytes machines 64
Programming Tips
 Replacing numbers in your code with macros
- don’t use magic numbers directly
#define MAX_NAME_LEN 50;
char name[MAX_NAME_LEN];
 Avoiding global variables
- modulation is more important
 Giving variables and functions a nice name
- a meaning name
 Don’t repeat your code
- make a subroutine/function
 Don’t let the function body to exceed one screen
- hard to debug
 Indenting your code (clearance)
if(expression)
{
if(expression)
{
……
}
}
 Commenting your code
 Don’t rush into coding. Plan first.
 Printing out more debugging information
 Using debugger (gdb)
C vs. C++
 C++ is a superset of C
 C++ has all the characteristics of C
 Using g++ to compile your source code
Books recommended
 The C Programming Language, Brian Kernighan
and Dennis Ritchie. Second edition. Prentice-Hall,
1988. (C Bible)
 The C++ Programming Language, Bjarne
Stroustrup. Third edition. Addison-Wesley, 1997.
(C++ Bible)
 Advanced Programming in the UNIX
Environment, W. Richard Stevens, Addison-
Wesley, 1992. (APUE)
Thanks

More Related Content

Similar to c_tutorial_2.ppt

Similar to c_tutorial_2.ppt (20)

CPU
CPUCPU
CPU
 
introduction to c programming and C History.pptx
introduction to c programming and C History.pptxintroduction to c programming and C History.pptx
introduction to c programming and C History.pptx
 
What is c
What is cWhat is c
What is c
 
Token and operators
Token and operatorsToken and operators
Token and operators
 
2.overview of c#
2.overview of c#2.overview of c#
2.overview of c#
 
Unit i intro-operators
Unit   i intro-operatorsUnit   i intro-operators
Unit i intro-operators
 
Chapter1.pptx
Chapter1.pptxChapter1.pptx
Chapter1.pptx
 
guia de referencia para a linguagem do fabricante CCS info_syntax.pdf
guia de referencia para a linguagem do fabricante CCS info_syntax.pdfguia de referencia para a linguagem do fabricante CCS info_syntax.pdf
guia de referencia para a linguagem do fabricante CCS info_syntax.pdf
 
Kuliah komputer pemrograman
Kuliah  komputer pemrogramanKuliah  komputer pemrograman
Kuliah komputer pemrograman
 
C tutorial
C tutorialC tutorial
C tutorial
 
C tutorial
C tutorialC tutorial
C tutorial
 
C tutorial
C tutorialC tutorial
C tutorial
 
Getting Started with C++
Getting Started with C++Getting Started with C++
Getting Started with C++
 
Python
PythonPython
Python
 
dinoC_ppt.pptx
dinoC_ppt.pptxdinoC_ppt.pptx
dinoC_ppt.pptx
 
1 Revision Tour
1 Revision Tour1 Revision Tour
1 Revision Tour
 
additional.pptx
additional.pptxadditional.pptx
additional.pptx
 
C_Programming_Language_tutorial__Autosaved_.pptx
C_Programming_Language_tutorial__Autosaved_.pptxC_Programming_Language_tutorial__Autosaved_.pptx
C_Programming_Language_tutorial__Autosaved_.pptx
 
C programing Tutorial
C programing TutorialC programing Tutorial
C programing Tutorial
 
C++.pptx
C++.pptxC++.pptx
C++.pptx
 

Recently uploaded

ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...JhezDiaz1
 
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxRaymartEstabillo3
 
Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...jaredbarbolino94
 
DATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersDATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersSabitha Banu
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTiammrhaywood
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPCeline George
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdfssuser54595a
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatYousafMalik24
 
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfLike-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfMr Bounab Samir
 
Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Celine George
 
Roles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceRoles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceSamikshaHamane
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Jisc
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsanshu789521
 
Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxDr.Ibrahim Hassaan
 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxOH TEIK BIN
 
Capitol Tech U Doctoral Presentation - April 2024.pptx
Capitol Tech U Doctoral Presentation - April 2024.pptxCapitol Tech U Doctoral Presentation - April 2024.pptx
Capitol Tech U Doctoral Presentation - April 2024.pptxCapitolTechU
 
CELL CYCLE Division Science 8 quarter IV.pptx
CELL CYCLE Division Science 8 quarter IV.pptxCELL CYCLE Division Science 8 quarter IV.pptx
CELL CYCLE Division Science 8 quarter IV.pptxJiesonDelaCerna
 

Recently uploaded (20)

ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
 
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
 
Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...
 
DATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersDATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginners
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERP
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice great
 
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfLike-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
 
ESSENTIAL of (CS/IT/IS) class 06 (database)
ESSENTIAL of (CS/IT/IS) class 06 (database)ESSENTIAL of (CS/IT/IS) class 06 (database)
ESSENTIAL of (CS/IT/IS) class 06 (database)
 
Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17
 
Roles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceRoles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in Pharmacovigilance
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha elections
 
9953330565 Low Rate Call Girls In Rohini Delhi NCR
9953330565 Low Rate Call Girls In Rohini  Delhi NCR9953330565 Low Rate Call Girls In Rohini  Delhi NCR
9953330565 Low Rate Call Girls In Rohini Delhi NCR
 
Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptx
 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptx
 
Capitol Tech U Doctoral Presentation - April 2024.pptx
Capitol Tech U Doctoral Presentation - April 2024.pptxCapitol Tech U Doctoral Presentation - April 2024.pptx
Capitol Tech U Doctoral Presentation - April 2024.pptx
 
CELL CYCLE Division Science 8 quarter IV.pptx
CELL CYCLE Division Science 8 quarter IV.pptxCELL CYCLE Division Science 8 quarter IV.pptx
CELL CYCLE Division Science 8 quarter IV.pptx
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 

c_tutorial_2.ppt

  • 2. Who is the TA? Name: Jingjing Duan Office Hours: (might change) Tue & Fri 2:00-4:00 Office: Room 266, WVH Email: duanjj@ccs.neu.edu Class web: www.ccs.neu.edu/course/csu480
  • 3. Outline  “Hello World" Program  Data Types & Variables  printf()  Arithmetic & Logical Operations  Conditionals  Loops  Arrays & Strings  Pointers  Functions  Command-Line Argument  Data Structure  Memory Allocation  Programming Tips  C vs. C++  Books recommended
  • 4. Hello World Program  The source code #include <stdio.h> int main() { printf("Hello Worldn"); return(0); }
  • 5. Hello World Program  How to compile? $ gcc hello.c –o hello gcc compiling command hello.c source file hello compiler-generated executable file Note: the default output filename is “a.out”
  • 6.  How to execute? ./hello “./ ” indicates the following file “hello” resides under the current directory. Hello World Program Q: why “.” is not included in $PATH environment variable?
  • 7. Hello World Program A: security consideration. Command Location Comment ls /bin/ls provided by the system ls current directory virus
  • 8. Name Description Size* Range* char Character or small integer 1 byte signed: -128 to 127 unsigned: 0 to 255 short int (short) Short integer 2 bytes signed: -32768 to 32767 unsigned: 0 to 65535 int Integer 4 bytes signed: -2147483648 to 2147483647 unsigned: 0 to 4294967295 long int (long) Long integer 4 bytes signed: -2147483648 to 2147483647 unsigned: 0 to 4294967295 float Floating point number 4 bytes 3.4e +/- 38 (7 digits) double Double precision floating point number 8 bytes 1.7e +/- 308 (15 digits) long double Long double precision floating point number 8 bytes 1.7e +/- 308 (15 digits) Data types
  • 9.  Variable Declaration int length = 100; char num = ‘9’; //The actual value is 57 float deposit = 240.5; unsigned short ID = 0x5544; Try the following statements, and see what happens unsigned char value = -1; printf(“The value is %d n”, value); unsigned char value = 300; printf(“The value is %d n”, value);
  • 10. Result Definition Memory layout Display comment unsigned char value = -1 11111111 255 unsigned char value = 300 00101100 44 overflow
  • 11.  Local variable Local variables are declared within the body of a function, and can only be used within that function.  Static variable Another class of local variable is the static type. It is specified by the keyword static in the variable declaration. The most striking difference from a non-static local variable is, a static variable is not destroyed on exit from the function.  Global variable A global variable declaration looks normal, but is located outside any of the program's functions. So it is accessible to all functions. Variable types
  • 12.  An example int global = 10; //global variable int func (int x) { static int stat_var; //static local variable int temp; //(normal) local variable int name[50]; //(normal) local variable …… }
  • 13. Variable Definition vs Declaration Definition Tell the compiler about the variable: its type and name, as well as allocated a memory cell for the variable Declaration Describe information ``about'' the variable, doesn’t allocate memory cell for the variable
  • 15. printf() The printf() function can be instructed to print integers, floats and string properly.  The general syntax is printf( “format”, variables);  An example int stud_id = 5200; char * name = “Mike”; printf(“%s ‘s ID is %d n”, name, stud_id);
  • 16.  Format Identifiers %d decimal integers %x hex integer %c character %f float and double number %s string %p pointer  How to specify display space for a variable? printf(“The student id is %5d n”, stud_id); The value of stud_id will occupy 5 characters space in the print-out.
  • 17.  Why “n” It introduces a new line on the terminal screen. a alert (bell) character backslash b backspace ? question mark f formfeed ’ single quote n newline ” double quote r carriage return 000 octal number t horizontal tab xhh hexadecimal number v vertical tab escape sequence
  • 20. Increment and Decrement Operators awkward easy easiest x = x+1; x += 1 x++ x = x-1; x -= 1 x--
  • 21. Example  Arithmetic operators int i = 10; int j = 15; int add = i + j; //25 int diff = j – i; //5 int product = i * j; // 150 int quotient = j / i; // 1 int residual = j % i; // 5 i++; //Increase by 1 i--; //Decrease by 1
  • 22.  Comparing them int i = 10; int j = 15; float k = 15.0; j / i = ? j % i = ? k / i = ? k % i = ?
  • 23.  The Answer j / i = 1; j % i = 5; k / i = 1.5; k % i It is illegal. Note: For %, the operands can only be integers.
  • 24. Logical Operations  What is “true” and “false” in C In C, there is no specific data type to represent “true” and “false”. C uses value “0” to represent “false”, and uses non-zero value to stand for “true”.  Logical Operators A && B => A and B A || B=> A or B A == B => Is A equal to B? A != B => Is A not equal to B?
  • 25. A > B => Is A greater than B? A >= B => Is A greater than or equal to B? A < B => Is A less than B? A <= B => Is A less than or equal to B?  Don’t be confused && and || have different meanings from & and |. & and | are bitwise operators.
  • 26. Short circuiting  Short circuiting means that we don't evaluate the second part of an AND or OR unless we really need to. Some practices Please compute the value of the following logical expressions?
  • 27. int i = 10; int j = 15; int k = 15; int m = 0; if( i < j && j < k) => if( i != j || k < j) => if( j<= k || i > k) => if( j == k && m) => if(i) => if(m || j && i ) =>
  • 28. int i = 10; int j = 15; int k = 15; int m = 0; if( i < j && j < k) => false if( i != j || k < j) => true if( j<= k || i > k) => true if( j == k && m) => false if(i) => true if(m || j && i ) => true Did you get the correct answers?
  • 29. Conditionals  if statement Three basic formats, if (expression){ statement … } if (expression) { statement … }else{ statement … }
  • 30. if (expression) { statement… } else if (expression) { statement… } else{ statement… }
  • 31.  An example if(score >= 90){ a_cnt ++; }else if(score >= 80){ b_cnt++; }else if(score >= 70){ c_cnt++; }else if (score>= 60){ d_cnt++ }else{ f_cnt++ }
  • 32.  The switch statement switch (expression) { case item1: statement; break; case item2: statement; break; default: statement; break; }
  • 33. Loops  for statement for (expression1; expression2; expression3){ statement… } expression1 initializes; expression2 is the terminate test; expression3 is the modifier;
  • 34.  An example int x; for (x=0; x<3; x++) { printf("x=%dn",x); } First time: x = 0; Second time: x = 1; Third time: x = 2; Fourth time: x = 3; (don’t execute the body)
  • 35.  The while statement while (expression) { statement … } while loop exits only when the expression is false.  An example int x = 3; while (x>0) { printf("x=%d n",x); x--; }
  • 36. for <==> while for (expression1; expression2; expression3){ statement… } expression1; while (expression2) { statement…; expression3; } equals
  • 37. Arrays & Strings  Arrays int ids[50]; char name[100]; int table_of_num[30][40];  Accessing an array ids[0] = 40; i = ids[1] + j; table_of_num[3][4] = 100; Note: In C Array subscripts start at 0 and end one less than the array size. [0 .. n-1]
  • 38.  Strings Strings are defined as arrays of characters. The only difference from a character array is, a symbol “0” is used to indicate the end of a string. For example, suppose we have a character array, char name[8], and we store into it a string “Dave”. Note: the length of this string 4, but it occupies 5 bytes. D a v e 0
  • 39. Functions Functions are easy to use; they allow complicated programs to be broken into small blocks, each of which is easier to write, read, and maintain. This is called modulation.  How does a function look like? returntype function_name(parameters…) { local variables declaration; function code; return result; }
  • 40.  Sample function int addition(int x, int y) { int add; add = x + y; return add; }  How to call a function? int result; int i = 5, j = 6; result = addition(i, j);
  • 41. Pointers Pointer is the most beautiful (ugliest) part of C, but also brings most trouble to C programmers. Over 90% bugs in the C programs come from pointers. “The International Obfuscated C Code Contest ” (http://www.ioccc.org/)  What is a pointer? A pointer is a variable which contains the address in memory of another variable. In C we have a specific type for pointers.
  • 42.  Declaring a pointer variable int * pointer; char * name;  How to obtain the address of a variable? int x = 0x2233; pointer = &x; where & is called address of operator.  How to get the value of the variable indicated by the pointer? int y = *pointer;
  • 43. 33 22 00 00 0x5200 0x5203 0x5200 pointer What happens in the memory? Suppose the address of variable x is 0x5200 in the above example, so the value of the variable pointer is 0x5200. X
  • 44. swap the value of two variables
  • 45. Why is the left one not working? swap main x, y a, b call swap(a, b) in main x, y, a, b are all local variables
  • 46. Why is the right one working?
  • 47.  Pointers and Arrays Pointers and arrays are very closely linked in C. Array elements arranged in consecutive memory locations  Accessing array elements using pointers int ids[50]; int * p = &ids[0]; p[i] <=> ids[i]  Pointers and Strings A string can be represented by a char * pointer.
  • 48. Char name[50]; name[0] = ‘D’; name[1] = ‘a’; name[2] = ‘v’; name[3] = ‘e’; name[4] = ‘0’; char * p = &name[0]; printf(“The name is %s n”, p); Note: The p represents the string “Dave”, but not the array name[50].
  • 49. Command-Line Argument In C you can pass arguments to main() function.  main() prototype int main(int argc, char * argv[]); argc indicates the number of arguments argv is an array of input string pointers.  How to pass your own arguments? ./hello 10
  • 50.  What value is argc and argv? Let’s add two printf statement to get the value of argc and argv. #include <stdio.h> int main(int argc, char * argv[]);) { int i=0; printf("Hello Worldn"); printf(“The argc is %d n”, argc); for(i=0; i < argc; i++){ printf(“The %dth element in argv is %sn”, i, argv[i]); } return(0); }
  • 51.  The output The argc is 2 The 0th element in argv is ./hello The 1th element in argv is 10 The trick is the system always passes the name of the executable file as the first argument to the main() function.  How to use your argument? Be careful. Your arguments to main() are always in string format. Taking the above program for example, the argv[1] is string “10”, not a number. You must convert it into a number before you can use it.
  • 52. Data Structure A data structure is a collection of one or more variables, possibly of different types.  An example of student record struct stud_record{ char name[50]; int id; int age; int major; …… };
  • 53.  A data structure is also a data type struct stud_record my_record; struct stud_record * pointer; pointer = & my_record;  Accessing a field inside a data structure my_record.id = 10; “.” or pointer->id = 10; “->”
  • 54. Memory Allocation  Stack memory allocation Non-static local variable is an example of stack memory allocation. Such memory allocations are placed in a system memory area called the stack.  Static memory allocation Static local variable and global variable require static memory allocation. Static memory allocation happens before the program starts, and persists through the entire life time of the program.
  • 55.  Dynamic memory allocation It allows the program determine how much memory it needs at run time, and allocate exactly the right amount of storage. The region of memory where dynamic allocation and deallocation of memory can take place is called the heap. Note: the program has the responsibility to free the dynamic memory it allocated.
  • 57.  Functions for the dynamic memory allocation void *malloc(size_t number_of_bytes); allocates dynamic memory size_t sizeof(type); returns the number of bytes of type void free(void * p) releases dynamic memory allocation  An example of dynamic memory allocation int * ids; //id arrays int num_of_ids = 40; ids = malloc( sizeof(int) * num_of_ids); …….. Processing …... free(ids);
  • 58.  Allocating a data structure instance struct stud_record * pointer; pointer = malloc(sizeof(struct stud_record)); pointer->id = 10; Never calculate the size of data structure yourself. The reason is the size of data types is machine-dependent. Give it to sizeof() function. size of int 32-bytes machines 32 64-bytes machines 64
  • 59. Programming Tips  Replacing numbers in your code with macros - don’t use magic numbers directly #define MAX_NAME_LEN 50; char name[MAX_NAME_LEN];  Avoiding global variables - modulation is more important  Giving variables and functions a nice name - a meaning name  Don’t repeat your code - make a subroutine/function  Don’t let the function body to exceed one screen - hard to debug
  • 60.  Indenting your code (clearance) if(expression) { if(expression) { …… } }  Commenting your code  Don’t rush into coding. Plan first.  Printing out more debugging information  Using debugger (gdb)
  • 61. C vs. C++  C++ is a superset of C  C++ has all the characteristics of C  Using g++ to compile your source code
  • 62. Books recommended  The C Programming Language, Brian Kernighan and Dennis Ritchie. Second edition. Prentice-Hall, 1988. (C Bible)  The C++ Programming Language, Bjarne Stroustrup. Third edition. Addison-Wesley, 1997. (C++ Bible)  Advanced Programming in the UNIX Environment, W. Richard Stevens, Addison- Wesley, 1992. (APUE)