C programming language

Slides:



Advertisements
Similar presentations
C Language.
Advertisements

IT 325 OPERATING SYSTEM C programming language. Why use C instead of Java Intermediate-level language:  Low-level features like bit operations  High-level.
What is a pointer? First of all, it is a variable, just like other variables you studied So it has type, storage etc. Difference: it can only store the.
C Intro.
Lecture 2 Introduction to C Programming
Introduction to C Programming
Introduction to C. Why use C instead of Java Intermediate-level language: –Low-level features like raw memory tweaking –High-level features like complex.
C For Java Programmers Tom Roeder CS sp. Why C? The language of low-level systems programming  Commonly used (legacy code)  Trades off safety.
Memory Arrangement Memory is arrange in a sequence of addressable units (usually bytes) –sizeof( ) return the number of units it takes to store a type.
Introduction to C Programming Overview of C Hello World program Unix environment C programming basics.
CS100A, Fall 1997, Lectures 221 CS100A, Fall 1997 Lecture 22, Tuesday 18 November Introduction To C Goal: Acquire a reading knowledge of basic C. Concepts:
Guide To UNIX Using Linux Third Edition
Chapter 3: Introduction to C Programming Language C development environment A simple program example Characters and tokens Structure of a C program –comment.
CMSC 104, Version 8/061L18Functions1.ppt Functions, Part 1 of 4 Topics Using Predefined Functions Programmer-Defined Functions Using Input Parameters Function.
Functions in C. Function Terminology Identifier scope Function declaration, definition, and use Parameters and arguments Parameter order, number, and.
Computer Science 210 Computer Organization Introduction to C.
CS140: Intro to CS An Overview of Programming in C by Erin Chambers.
C Programming Tutorial – Part I CS Introduction to Operating Systems.
Programming With C.
CMSC 104, Version 9/011 Introduction to C Topics Compilation Using the gcc Compiler The Anatomy of a C Program 104 C Programming Standards and Indentation.
Structure of a C program Preprocessor directive (header file) Program statement } Preprocessor directive Global variable declaration Comments Local variable.
Introduction to Programming
Lecture 1 cis208 January 14 rd, Compiling %> gcc helloworld.c returns a.out %> gcc –o helloworld helloworld.c returns helloworld.
CECS 130 EXAM 1. To declare a constant (read only) value: const int x = 20; const float PI = 3.14; Can we do this? const int x;
Computer Organization and Design Pointers, Arrays and Strings in C Montek Singh Sep 18, 2015 Lab 5 supplement.
 2007 Pearson Education, Inc. All rights reserved. A Simple C Program 1 /* ************************************************* *** Program: hello_world.
Sudeshna Sarkar, IIT Kharagpur 1 Programming and Data Structure Sudeshna Sarkar Lecture 3.
Chapter 1 slides1 What is C? A high-level language that is extremely useful for engineering computations. A computer language that has endured for almost.
1 Lecture 2 - Introduction to C Programming Outline 2.1Introduction 2.2A Simple C Program: Printing a Line of Text 2.3Another Simple C Program: Adding.
Computer Organization and Design Pointers, Arrays and Strings in C
Lesson #8 Structures Linked Lists Command Line Arguments.
User-Written Functions
Computer Science 210 Computer Organization
C/C++ Tutorial.
C Primer.
A bit of C programming Lecture 3 Uli Raich.
Chapter 2 - Introduction to C Programming
Functions, Part 2 of 2 Topics Functions That Return a Value
C Programming Tutorial – Part I
Programming Languages and Paradigms
Day 02 Introduction to C.
Quiz 11/15/16 – C functions, arrays and strings
Programming Paradigms
C Basics.
Intro to C CS 3410 (Adapted from slides by Kevin Walsh
Chapter 2 - Introduction to C Programming
Arrays in C.
Lecture 6 C++ Programming
Programming in C Input / Output.
Computer Science 210 Computer Organization
Programming in C Input / Output.
Chapter 2 - Introduction to C Programming
Chapter 2 - Introduction to C Programming
Chapter 2 - Introduction to C Programming
Introduction to C Topics Compilation Using the gcc Compiler
Introduction C is a general-purpose, high-level language that was originally developed by Dennis M. Ritchie to develop the UNIX operating system at Bell.
Chapter 2 - Introduction to C Programming
C Programming Getting started Variables Basic C operators Conditionals
Programming in C Input / Output.
Introduction to C Topics Compilation Using the gcc Compiler
Chapter 2 - Introduction to C Programming
Exercise Arrays.
Introduction to C EECS May 2019.
Programming Languages and Paradigms
DATA TYPES There are four basic data types associated with variables:
Introduction to C Programming
15213 C Primer 17 September 2002.
CPS125.
Getting Started With Coding
Presentation transcript:

C programming language It 325 operating system

Why use C instead of Java Intermediate-level language: Low-level features like bit operations High-level features like complex data-structures Access to all the details of the implementation Explicit memory management Explicit error detection Better performance than Java All this make C a far better choice for system programming.

Goals of Tutorial Introduce basic C concepts: Need to do more reading on your own Warn you about common mistakes: More control in the language means more room for mistakes C programming requires strict discipline Provide additional information to get you started Compilation and execution

Example1 /* hello world program */ #include <stdio.h> void main() { printf("Hello World\n"); // print to screen }

Introduction A C Program contains functions and variables. The functions specify the tasks to be performed by the program. Ex: The above program has one function called main. This function tells your program where to start running. main functions are normally kept short and calls different functions to perform the necessary sub-tasks. All C codes must have a main function.

Introduction C is case-sensitive. C also denotes the end of statement with a semi-colon like Java. The // or /* comment */ designates a comment. #include simply includes a group of functions from the filename specified by(<...>). Ex:above stdio.h contains a list of standard functions for C to use, the function that our program above uses is printf. Printf takes a string of characters between quotation marks, and outputs them to the screen.

Primitive Types Integer types: char : used to represent characters or one byte data(not 16 bit like in Java) int, short and long : versions of integer (architecture dependent) can be signed or unsigned Floating point types: float and double like in Java. No boolean type, int or char used instead. 0 => false ≠ 0 => true

Primitive Types Examples char c=’A’; int i=-2234; unsigned int ui=10000; float pi=3.14; double long_pi=0.31415e+1;

Arrays and Strings Arrays: Strings: arrays of char terminated by \0 /* declare and allocate space for array A */ int A[10]; for (int i=0; i<10; i++) A[i]=0; Strings: arrays of char terminated by \0 char[] name=“IT421"; name[4]=’5’; Functions to operate on strings in string.h. strcpy, strcmp, strcat, strstr, strchr.

printf function Syntax: printf(formating_string, param1, ...) Formating string: text to be displayed containing special markers where values of parameters will be filled: %d for int %c for char %f for float %lf for double %s for string Example: printf("The number of students in %s is %d.\n", “IT421", 95);

Pointers address of variable: index of memory location where variable is stored (first location). pointer : variable containing address of another variable. type* means pointer to variable of type type. Example: int i; int* ptr_int; /* ptr_int points to some random location */ ptr_int = &i; /* ptr_int points to integer i */ (*ptr_int) = 3; /* variable pointed by ptr_int takes value 3 */ & address operator, * dereference operator. Similar to references in Java.

Pointers (cont.) Attention: dereferencing an uninitialized pointer can have arbitrary effects (including program crash). Good programming advice: if a pointer is not initialized at declaration, initialize it with NULL, the special value for uninitialized pointer before dereferencing a pointer check if value is NULL int* p = NULL; . if (p == NULL){ printf("Cannot dereference pointer p.\n"); exit(1); }

Common Syntax with Java Operators: Arithmetic: +,-,*,/,% ++,--,*=,... Relational: <,>,<=,>=,==,!= Logical: &&, ||, !, ? : Bit: &,|,ˆ,!,<<,>>

Common Syntax with Java (cont.) Language constructs: if( ){ } else { } while( ){ } do { } while( ) for(i=0; i<100; i++){ } switch( ) { case 0: ... } break, continue, return No exception handling statements.

Functions Provide modularization: easier to code and debug. Code reuse. Additional power to the language: recursive functions. Arguments can be passed: by value: a copy of the value of the parameter handed to the function by reference: a pointer to the parameter variable is handed to the function Returned values from functions: by value or by reference

Functions – Basic Example #include <stdio.h> int sum(int a, int b); /* function declaration or prototype */ int psum(int* pa, int* pb); void main(void){ int total=sum(2+2,5); /* call function sum with parameters 4 and 5 */ printf("The total is %d.\",total); } /* definition of function sum; has to match declaration signature */ int sum(int a, int b){ /* arguments passed by value */ return (a+b); /* return by value */ int psum(int* pa, int* pb){ /* arguments passed by reference */ return ((*a)+(*b));

Why pass by reference? #include <stdio.h> void swap(int, int); void main(void){ int num1=5, num2=10; swap(num1, num2); printf("num1=%d and num2=%d\n", num1, num2); } void swap(int n1, int n2){ /* pass by value */ int temp; temp = n1; n1 = n2; n2 = temp; $ ./swaptest num1=5 and num2=10 NOTHING HAPPENED

Why pass by reference?(cont.) #include <stdio.h> void swap(int*, int*); void main(void){ int num1=5, num2=10; int* ptr = &num1; swap(ptr, &num2); printf("num1=%d and num2=%d\n", num1, num2); } void swap(int* p1, int* p2){ /* pass by reference */ int temp; temp = *p1; (*p1) = *p2; (*p2) = temp; $ ./swaptest2 num1=10 and num2=5 CORRECT NOW

Example2 #include <stdio.h> void main() { int numpens; // declare a number variable double cost; // declare a variable that can store decimals printf("How many pens do you want: "); scanf("%d", &numpens); // get input from user cost = 0.55 * numpens; // do some math printf("\nPlease pay %f to the cashier!\n", cost); }

Variable Before a variable can be used it must be declared. Declaring a variable in C is easy, specify the type and the name for your variables. (int , double , char) Ex: double age; int number; char * name; char x;

Input & output function scanf function simply gets a value from the user. Printf takes a string of characters between quotation marks, and outputs them to the screen. Notice some special character sequences contained in both the scanf and printf : %f , %c , %s and %d. These tell printf and scanf what type of variables to expect. %f corresponds to double, %d is for int % s for string and %c for character.

Example3: Dealing with string #include <stdio.h> void main() { char * name; printf("what is your name: "); scanf("%s", name); // get input from user printf(“ your name %s\n", name); }

Programs with Multiple Files File mypgm.h: void myproc(void); /* function declaration */ int mydata; /* global variable */ Usually no code goes into header files, only declarations. File mypgm.c: #include <stdio.h> #include "myproc.h" void myproc(void){ mydata=2; ... /* some code */ }

Programs with Multiple Files (cont.) File main.c: #include <stdio.h> #include "mypgm.h" void main(void){ myproc(); } Have to compile files mpgm.c and main.c to produce object files mpgm.obj and main.obj (mpgm.o and main.o on UNIX). Have to link files mpgm.obj, main.obj and system libraries to produce executable. Compilation usually automated using nmake on Windows and make on UNIX.

Things to remember Initialize variables before using, especially pointers. Make sure the life of the pointer is smaller or equal to the life of the object it points to. do not return local variables of functions by reference do not dereference pointers before initialization or after deallocation C has no exceptions so have to do explicit error handling. Need to do more reading on your own and try some small programs.

Compile and run your C program under Linux The program hello.c can be compiled with the GCC as follows: gcc -o hello hello.c The -o option informs the compiler of the desired name for the executable (i.e., runnable) file that it produces. The name used in this example is hello. If the -o option is omitted, the compiler will give the name a.out to the executable file. ./hello you run by the program typing 'hello' at the command line.