C Review. C Program Structure Compilation of a program: gcc –o hello hello.c -o specifies the name of the executable file Other flags: Wall – turn on.

Slides:



Advertisements
Similar presentations
Introduction to C Programming
Advertisements

C Structures What is a structure? A structure is a collection of related variables. It may contain variables of many different data types---in contrast.
C Language.
Computer Programming w/ Eng. Applications
Programming Languages and Paradigms The C Programming Language.
1 Chapter 10 Strings and Pointers. 2 Introduction  String Constant  Example: printf(“Hello”); “Hello” : a string constant oA string constant is a series.
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.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 122 – Data Structures Characters and Strings.
Files in C Rohit Khokher. Files in C Real life situations involve large volume of data and in such cases, the console oriented I/O operations pose two.
BBS514 Structured Programming (Yapısal Programlama)1 Functions and Structured Programming.
Kernighan/Ritchie: Kelley/Pohl:
1 Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation –The new operator –The delete operator –Dynamic.
12-2 Know how if and switch C statements control the sequence of execution of statements. Be able to use relational and logical operators in the conditional.
FunctionsFunctions Systems Programming Concepts. Functions   Simple Function Example   Function Prototype and Declaration   Math Library Functions.
Expressions and Interactivity Chapter 3. 2 The cin Object Standard input object Like cout, requires iostream file Used to read input from keyboard Often.
Strings in C. Strings are Character Arrays Strings in C are simply arrays of characters. – Example:char s [10]; This is a ten (10) element array that.
By Sidhant Garg.  C was developed between by Dennis Ritchie at Bell Laboratories for use with the Unix Operating System.  Unlike previously.
C Programming Tutorial – Part I CS Introduction to Operating Systems.
 2000 Prentice Hall, Inc. All rights reserved. Chapter 8 - Characters and Strings Outline 8.1Introduction 8.2Fundamentals of Strings and Characters 8.3Character.
Chapter 6: Functions Starting Out with C++ Early Objects
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Tevfik Bultan Lecture 12: Pointers continued, C strings.
Project 1 Due Date: September 25 th Quiz 4 is due September 28 th Quiz 5 is due October2th 1.
Functions Why we use functions C library functions Creating our own functions.
Hello.java Program Output 1 public class Hello { 2 public static void main( String [] args ) 3 { 4 System.out.println( “Hello!" ); 5 } // end method main.
CMSC 1041 Functions II Functions that return a value.
Characters and Strings File Processing Exercise C Programming:Part 3.
Introduction As programmers, we don’t want to have to implement functions for every possible task we encounter. The Standard C library contains functions.
Introduction to C For the participants of Practical Course „Scientific Computing and Visualization“
C/C++ Basics. Basic Concepts Basic functions of each language: Input, output, math, decision, repetition Types of errors: Syntax errors, logic errors,
Representing Strings and String I/O. Introduction A string is a sequence of characters and is treated as a single data item. A string constant, also termed.
Starting Out with C++ Early Objects ~~ 7 th Edition by Tony Gaddis, Judy Walters, Godfrey Muganda Modified for CMPS 1044 Midwestern State University 6-1.
Slides created by: Professor Ian G. Harris Hello World #include main() { printf(“Hello, world.\n”); }  #include is a compiler directive to include (concatenate)
Lecture 11: Files & Arrays B Burlingame 18 November 2015.
Computer Organization and Design Pointers, Arrays and Strings in C Montek Singh Sep 18, 2015 Lab 5 supplement.
C LANGUAGE Characteristics of C · Small size
GAME203 – C Files stdio.h C standard Input/Output “getchar()”
EEL 3801 C++ as an Enhancement of C. EEL 3801 – Lotzi Bölöni Comments  Can be done with // at the start of the commented line.  The end-of-line terminates.
MORE POINTERS Plus: Memory Allocation Heap versus Stack.
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Lucas Bang Lecture 11: Pointers.
Files A collection of related data treated as a unit. Two types Text
FILES IN C. File Operations  Creation of a new file  Opening an existing file  Reading from a file  Writing to a file  Moving to a specific location.
Sudeshna Sarkar, IIT Kharagpur 1 Programming and Data Structure Sudeshna Sarkar Lecture 3.
Pointers. Addresses in Memory Everything in memory has an address. C allows us to obtain the address that a variable is stored at. scanf() is an example.
Connecting to Files In order to read or write to a file, we need to make a connection to it. There are several functions for doing this. fopen() – makes.
C Programming Day 2. 2 Copyright © 2005, Infosys Technologies Ltd ER/CORP/CRS/LA07/003 Version No. 1.0 Union –mechanism to create user defined data types.
Real Numbers Device driver process within the operating system that interacts with I/O controller logical record 1 logical record 2 logical record 3.
Introduction to C CSCE 343.
Arithmetic Expressions
Computer Organization and Design Pointers, Arrays and Strings in C
Computer Science 210 Computer Organization
Functions, Part 2 of 2 Topics Functions That Return a Value
Programming Languages and Paradigms
C Short Overview Lembit Jürimägi.
Programming Paradigms
C Review.
Programming in C Input / Output.
Computer Science 210 Computer Organization
C What you Know* Objective: To introduce some of the features of C. This assumes that you are familiar with C++ or java and concentrates on the features.
Text and Binary File Processing
File Input and Output.
Assignment Operators Topics Increment and Decrement Operators
Chapter: 7-12 Final exam review.
Assignment Operators Topics Increment and Decrement Operators
C Programming Getting started Variables Basic C operators Conditionals
Programming Languages and Paradigms
Assignment Operators Topics Increment and Decrement Operators
Data Structures.
Functions that return a value
Functions in C Math Library Functions Functions Function Definitions
COMP 2130 Intro Computer Systems Thompson Rivers University
Presentation transcript:

C Review

C Program Structure Compilation of a program: gcc –o hello hello.c -o specifies the name of the executable file Other flags: Wall – turn on all warnings, useful for debugging purposes o2 – turn optimization on ansi –use ANSI C #include int main ( ) { variable declarations; statements; scanf ( “ %d ”, &var); printf ( “…..\n ” ); return 0; }

Data Types & Operators Integers int short long unsigned Real numbers float double char Assignment = Arithmetics + - * / % Comparator == Others ++ --

Variables A Variable Is a Symbolic Name for a Computer Memory Location That Holds Some Data. A Data Type Must Be Specified for Each Variable. integer, float, char,... Conversion int joon = 37.5 * ; float won = (float) joon;

Scoping Rules int global_joon; void main() { int joon; } int function1 (...) { joon = 100; global_joon = joon; } Declared variables have “scope” Scope defines where the declared variables are visible

Local vs. Global variables Global variables Defined outside any function Generally placed at the top of the file after include statements Visible everywhere Any function can read & modify them Local variables Visible only within the functions where declared SAFE !! – they are invisible from outside Allows more control

Array int ages[1000] ages[0] ~ ages[999] illegal accesses: ages[-1], ages[1000]. ages[2000] two dimensional array int table[first_index][second_index]; program binary7219 data ages[0]ages[999]

Easy Initialization int value[1000] = {75, 78, 65, 99. ….. 104, 120, 77, 48}; int value [row][column] = { {8, 16, 9, 52}, {3, 15, 27, 6}, {14, 25, 2, 10}};; int value [row][column] = { 8, 16, 9, 52, 3, 15, 27, 6, 14, 25, 2, 10};;

char and string char is a single byte string is an array of chars strlen(s); strcat(s1, s2); append s2 at the end of s1 int strcmp(s1, s2); returns 0 if two strings are equal negative if s1 < s2 positive otherwise ‘j’‘o’ ‘n’\0 char s[5] ; strcpy(s, “joon”);

Controls if-then-else switch loop for (i=0; i< 100; i++) a[i] = i; while structure switch (integer_expression) { case value1: statement; break; case value2: statement; break; ….. case valueN: statement; break; default: statement; }

Functions C programs consist of at least one main() function Can have other functions as needed A Function Definition May Be Placed Before or After “ main ”. But A Function Definition Cannot Be Not Inside “ main ”. A function cannot be inside another function. A single pass compiler needs a prototype definition before usage, but implementation later

void main ( ) { char ForC = “f”; int newTemp, tmp = 106; …. newTemp = tempConvert (ForC, tmp); } int tempConvert (char FC, int temp) { if (FC == ‘F’) return ((temp – 32) * 5 / 9); else return (temp * 9 / ); } Be Careful for 1. Number of Parameters 2. Data Types of the Parameters 3. Positions of the Parameters 4. Return_Data_Type

Libraries C employs many libraries Make it easy to use already written functions in standard libraries ISO C standard libarary header files – interface standard implementations are too many BSD libc GNU glibc.so,.... MS Visual C++

C Standard Libraries Many of the general purpose functions available in the Standard C library are declared in the following: math.h strings.h stdio.h stdlib.h time.h

stdio.h printf formatted printing to stdout scanf formatted input from stdin fprintf formatted printing to a file fscanf formatted input from a file getc get a character from a stream (e.g, stdin or a file) putc put a character to a stream (e.g, stdout or a fi;e) fgets get a string from a stream fputs write a string to a stream fopen open a file fclose close a file

Math.h abs returns the absolute value of an integer x cos returns the cosine of x, where x is in radians exp returns e**x fabs returns the absolute value of a float x log returns the logarithm to base e log10 returns the logarithm to base 10 pow returns x**y sin returns the sine of x, where x is in radians sqrt returns the square root of x tan returns the tangent of x, where x is in radians ceilceiling function floor flooring function

string.h strcat concatenates (i.e., adds) two strings strcmp compares two strings strcpy copies a string strlen the length of a string (not including the null) strstr finds a string within another string strtok divides a string into tokens (i.e., parts) memcpy memmove memcmp memset

stdlib.h and time.h atof convert a string to a double (not a float) atoi convert a string to an int exit terminate a program, return an integer value free release allocated memory malloc allocate memory rand generate a pseudo-random number srand seed the pseudo-random number generator system execute an external command time get the system time ctime convert the result from time() to something meaningful

void Dimension(int, double); /* function prototype */ Dimension(n, dn); /* function call */ /*** Dimension does not return any value. */ /*** Dimension must have a side effect. */ /* function definition */ void Dimension(int pn, double pdn) { pn = pn * 3.14 ; pdn = pdn * 3.14; } /** Dimension has no side effect. */ Function Call: No Return Value

void Dimension(int, double); /* function prototype */ Dimension(n, dn); /* function call */ /*** Dimension does not return any value. */ /*** Dimension must have a side effect. */ /* function definition */ void Dimension(int pn, double pdn) { pn = pn * 3.14 ; printf (“%d”, pn); pdn = pdn * 3.14; printf (“%f”, pdn): } /** Dimension has a side effect. */ Function Call: No Return Value

int radius, height; double circle, rectangle; void Dimension(); void main () { Dimension(); /* function call */ } /* function definition */ void Dimension() { circle = (radius*radius) * PI ; rectangle = (PI * (2*radius)) * height; } /*** Dimension has side effects – new values stored in global variables “circle” & “rectangle” ***/ Variable Scope

double Dimension(int, double); /* function prototype */ newdn = Dimension(n, dn); /* function call */ /*** Dimension returns a value. */ /*** The function call expression must be assigned to a variable or a part of an expression. */ /* function definition */ double Dimension(int pn, double pdn) { pn = pn * 3.14 ; pdn = pdn * 3.14; return pdn – pn; } /** Dimension returns a value */ Function Call: Return Value

void Dimension(); /* function prototype */ Dimension(); /* function call */ /*** Dimension does not return any value. */ /*** Dimension must have a side effect. */ /* function definition */ void Dimension() { circle = (radius*radius) * PI ; rectangle = (PI * (2*radius)) * height; } Function Call: Return Value

Pointer Variables Type and Variable Declaration int *iptr, inum; Data type of iptr is int * iptr is to hold the memory address of an integer variable so are float *fptr; char *cptr;

Address Operator Address Operator: & int ival, *ptr; ptr = &ival; obtains the memory address of variable ival stores it in ptr

Indirection Operator Indirection (Dereferencing) Operator: * int ival, newval, *ptr; ptr = &ival; *ptr Obtains the address stored in ptr (what ptr points to) Bad notation conflict with “ multiply ”, and comment *ptr = 300; /* gets the address stored in ptr */ newval = *ptr * 27 /* dereferences ival */

Example (1/2) float *fptr; int *iptr; float fvalue; int ivalue; ivalue = 200; fvalue = ; iptr = &ivalue; /* iptr has address of ivalue */ fptr = &fvalue; /* fptr has address of fvalue */ *fptr = *fptr – 300.0; /* *fptr refers to fvalue */ *iptr = *iptr + 300; /* *iptr refers to ivalue */

Some Illegal Constructs &327 &(I + 99) double dnum; int *ptr; ptr = &dnum; 7 **ptr /* 7;

Need for Pointers Avoid Copying Data Updates to Data by Different Programs Need for Linking Data logical links hot links on Web pages common values in columns of different tables physical link for speed

Singly Linked List: Concept apple ptr1 banana ptr2 cherry ptr3 insert “orange” pear null ptr0

Function (Call by Reference)

Call by Reference (Address) Pass to Function an Address as an Argument address = pointer to memory address Cannot be an “ expression to be evaluated ” The Called Function Can Change the Arguments in the Calling Function side effects way to return multiple values

Example int main () { void newVal (float *); /* function prototype */ float testval; printf ( “ \nEnter a number: “ ); scanf ( “ %f ”, &testval); newVal (&testval); /* function call */ return 0; } void newVal (float *num) /* function definition */ { *num = *num ; }

Example: Function Returning Multiple Values void newVal (int val1, int val2, float *sum, float *remain) { *sum = val1 + val2; *remain = val1 % val2; } /* returns two values */ /* side effects – same as global variables */

Passing an Array to a Function To Save Storage and Compute Time. The Starting Address of the First Element of an Array Is Passed. The Original Array Can Be Changed by the Function. Must Be Very Very Careful with Array Overflow and Underflow.

Array and Pointer The Name of an Array Is a Constant Pointer to the First Element of the Array. A String Is a Char Array. string variable string constant char s[100], num[1000]; s is a pointer to s[0] num is a pointer to num[0]

#define MAXNUM 1000 void findMax (int [MAXNUM]); int main () { int numList[1000]; …. findMax(numList); …. return 0; } void findMax (int local_array[]) { int I, max = local_array[0]; for (i=1; i<MAXNUM; i=i+1) if (max < local_array[i]) max = local_array[i]; }

Structure

Array: Collection of Same Types of Data Structure: Collection of Different Types of Data struct { char name[20]; int age; float salary; char hobby[3][20]; } employee; /* name, age, salary, hobby: members */ /* employee: variable of type struct { } */

Structure tag name struct EMPRECORD { char name[20]; int age; float salary; char hobby[3][20]; } employee, former_employee; /* EMPRECORD: tag name for { } */ /* struct EMPRECORD employee, former_employee; */

Member Data Types Primitive Types int, float, double, char pointer Array Structure other struct defining struct

Structure Member Access struct { char name[20]; int age; float salary; char hobby[3][20]; } employee; struct_variable.member_name /* employee.name */ /* employee.hobby[3][15] */

Struct Member Initialization struct { char name[20]; int age; float salary; char hobby[3][20]; } employee; employee.name[] = “ Neil Diamond ” ; employee hobby[3][] = “ tennis and walking ” ; employee = { “ hong gildong ”, 25, , “ jump ” };

Member Name Scope struct EMPRECORD { char name[20]; int age; float salary; char hobby[3][20]; } employee, former_employee; struct PERSON { char name[20]; int age; char address[30] ’ }; /* unique only within a single structure */

Structure: Use Example – IP Packet IP Header UDP Header Timestamp Synchronization Source ID First Contributing Source ID Last Contributing Source ID Application Data Sequence Number …… VPXM.. Real-Time Packet Transfer Protocol Message Format

Pointer and Self-Referential Structure struct NODE { int key; struct NODE *next; } node node1, node2, node3; node1.key = 100; node2.key = 250; node3.key = 467; node1.next = node2.next = node3.next = NULL; ; 100null node1 250null node2 467null node3

Example (cont’d) node1.next = &node2; node2.next = &node3; 100 node1 250 node2 467null node3 struct NODE { int key; struct NODE *next; } node node1, node2, node3;

Member Access via a pointer 100 node1 250 node2 467null node3 node1.next -> key 250 node1.next -> next -> key 467

Example: Passing a Copy struct EMPRECORD { char name[20]; int age; float salary; char hobby[3][20]; } employee; struct EMPRECORD update_records (struct EMPRECORD emp) { emp.age = 25; return emp; }

Example: Passing an Address struct EMPRECORD { char name[20]; int age; float salary; char hobby[3][20]; } employee; update_records (&employee); void update_records (struct EMPRECORD *emp) { emp -> age = 25; }

File I/O

Create a Data File Declare a File FILE *myFile; ** pointer to an internal file descriptor data structure Open the File #include char myFileName[15]; myFileName = “prices.dat” myFile = fopen (myFileName, “r”); ** r(read), w(write), a(append) modes Close the File fclose (myFile)

Example #include int main () { FILE *myFile; char myFileName[15]; gets(myFileName); myFile = fopen(myFileName, “r”); if (myFile == NULL) printf (“\nFile Could Not Be Opened”); else { ….. } return 0; }

Writing and Reading Data From a File Same as Writing and Reading Data from the Terminal fprintf, fscanf fputs, fgets fputc, fgetc #include <stdio/h)

Example int main () { int I; FILE *myFile; char myFileName[15]; double price[] = (139.25, 19.03); char *description[] = (“glove”, “CD”); gets(myFileName); myFile = fopen(myFileName, “r”); if (myFile == NULL) printf (“\nFile Could Not Be Opened”); else { for (i=0; I<2; i=i+1) fprintf (myFile, “%-9s %6.2\n”, description[i], price[i]; fclose (myFile); } return 0; }

Stack and Queue List insert/delete an element at any location Queue insert at the head delete at the tail First-In-First-Out (FIFO) Stack only one position to insert and delete Last-In-First-Out (LIFO)

Stack Operations push(x, S) inserts x onto a stack S pop(S) deletes the most new elements from S, and returns it to the callee initialize(S) creates a new empty stack Full(S), Empty(S) check if the stack S is full/empty

Stack Implementation data structures array - S pointer – top full/empty #define MAX_STACK_SIZE 100 struct stack{ int data[MAX_STACK_SIZE]; int top = -1; } s1, s2,...; int empty(stack s) { if (s.top < 0 ) return (1); else return (0); } int full(stack s) { if (s.top >= MAX_STACK_SIZE) return (1); else return (0); }

int pop(stack s) { if empty(s) return stack_empty(); return s.data[s.top--]; } void push(int x, stack s) { if (full(s)) { stack_full(); return; } s.data[++top] = x; }

List, Queue queue is similar to a stack but list is a little bit difficult how to insert an element to an array? what if the delete? better be implemented as a linked list