ge 211 programming in c dr. ahmed telba room :ac -134

82
GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134 http://faculty.ksu.edu.sa/ atelba/default.aspx

Upload: logan-harrington

Post on 17-Jan-2016

238 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

GE 211 Programming in C

Dr. Ahmed TelbaRoom :Ac -134

http://faculty.ksu.edu.sa/atelba/default.aspx

Page 2: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

2

Comment Example// omar's Homework #1

// This program is awesome!

#include <iostream.h>

/* This program computes the

coefficient of expansion of the

universe to 27 decimal places.

*/

int main() {

cout << 1.0000000000000000000001;

}

Page 3: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

3

Another C++ Program// C++ Addition of integers

#include <iostream.h>

int main() {

int integer1, integer2, sum;

cout << "Enter first integer\n";

cin >> integer1;

cout << "Enter second integer\n";

cin >> integer2;

sum = integer1 + integer2;

cout << "Sum is " << sum << endl;

return 0;

}

// C++ Addition of integers

#include <iostream.h>

int main() {

int integer1, integer2, sum;

cout << "Enter first integer\n";

cin >> integer1;

cout << "Enter second integer\n";

cin >> integer2;

sum = integer1 + integer2;

cout << "Sum is " << sum << endl;

return 0;

}

Page 4: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

Statements

Page 5: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

Declaration statements

Page 6: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134
Page 7: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134
Page 8: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

Operation –Assignment

Page 9: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134
Page 10: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

Printf() Format

Page 11: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134
Page 12: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

Printf format

Page 13: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134
Page 14: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134
Page 15: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

Scanf()

Page 16: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

/* Lesson for 3_1• */

#include <stdio.h>void main(void){int month; float expense, income; month = 12; expense = 111.1;income=100.;

printf("Month=%2d, Expense=$%9.2f\n",month,expense);

month = 11; expense = 82.1;

printf("For the %2dth month of the year\n" "the expenses were $%5.2f \n" "and the income was $%6.2f\n\n", month,expense,income);}

Page 17: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134
Page 18: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

/* Lesson for 3_2 */

#include <stdio.h>#define DAYS_IN_YEAR 365#define PI 3.14159

void main (void){

float income = 1234567890.12;

printf ("CONVERSION SPECIFICATIONS FOR INTEGERS \n\n");printf ("Days in year = \n"

"[[%1d]] \t(field width less than actual)\n""[[%9d]] \t(field width greater than actual)\n""[[%d]] \t(no field width specified) \n\n\n",DAYS_IN_YEAR, DAYS_IN_YEAR, DAYS_IN_YEAR);

printf ("CONVERSION SPECIFICATIONS FOR REAL NUMBERS\n\n");printf ("Cases for precision being specified correctly \n");printf ("PI = \n"

"[[%1.5f]] \t\t(field width less than actual) \n""[[%15.5f]] \t(field width greater than actual)\n""[[%.5f]] \t\t(no field width specified) \n\n",PI,PI,PI);

printf ("Cases for field width being specified correctly \n");printf ("PI = \n"

"[[%7.2f]] \t\t(precision less than actual) \n""[[%7.8f]] \t\t(precision greater than actual)\n""[[%7.f]] \t\t(no precision specified) \n\n",PI,PI,PI);

printf ("PRINTING SCIENTIFIC NOTATION \n\n");printf ("income = \n"

"[[%18.2e]] \t(field width large, precision small) \n""[[%8.5e]] \t(field width and precision medium size)\n""[[%4.1e]] \t\t(field width and precision small) \n""[[%e] \t(no specifications) \n\n",income, income, income, income);

printf ("USING A FLAG IN CONVERSION SPECIFICATIONS \n\n");printf ("Days in year= \n"

"[[%-9d]] \t\t(field width large, flag included)\n",DAYS_IN_YEAR); }

Page 19: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134
Page 20: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

#include <stdio.h>void main(void){

int i,j,k,p,m,n;float a,b,c,d,e,f,g,h,x,y;

i=5; j=5;k=11; p=3; x=3.0; y=4.0;printf("...... Initial values ......\n");printf("i=%4d, j=%4d\nk=%4d, p=%4d\nx=%4.2f, y=%4.2f\n\n",

i,j,k,p,x,y);/*--------------- Section 1 -------------------*/a=x+y; b=x-y; c=x*y; d=x/y; e=d+3.0; f=d+3; i=i+1; j=j+1;

printf("...... Section 1 output ......\n");printf("a=%5.2f, b=%5.2f\nc=%5.2f, d=%5.2f\n" "e=%5.2f, f=%5.2f\ni=%5d, j=%5d \n\n", a,b, c,d, e,f, i,j);/*--------------- Section 2 -------------------*/m=k%p; n=p%k; i++; ++j; e--; --f;

printf("...... Section 2 output ......\n"); printf("m=%4d, n=%4d\ni=%4d, j=%4d\n" "e=%4.2f, f=%4.2f\n",m,n, i,j, e,f);

}

Page 21: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134
Page 22: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134
Page 23: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134
Page 24: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

/* Lesson for 3_5 */#include <stdio.h>void main(void) { float income; double expense; int month, hour, minute;

printf("What month is it?\n"); scanf("%d", &month); printf("You have entered month=%5d\n",month);

printf("Please enter your income and expenses\n"); scanf("%f %lf",&income,&expense); printf("Entered income=%8.2f, expenses=%8.2lf\n", income,expense);

printf("Please enter the time, e.g.,12:45\n");scanf("%d : %d",&hour,&minute); printf("Entered Time = %2d:%2d\n",hour,minute); }

Page 25: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134
Page 26: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

/* Lesson for 3_7 */

#include <math.h>#include <stdio.h> void main(void) { double x=3.0, y=4.0, a,b,c,d,e,f;

float g; a=sin(x); b=exp(x);

c=log(x); d=sqrt(x); e=pow(x,y); f=sin(y)+exp(y)-log10(y)*sqrt(y)/pow(3.2,4.4); g=log(x); printf("x=%4.1f y=%4.1f \n\n\r\ a=sin(x) = %11.4f\n\r\ b=exp(x) = %11.4f\n\r\ c=log(x) = %11.9f\n\n\r\ d=sqrt(x) = %11.4f\n\r\ e=pow(x,y) = %11.4f\n\r\ f=sin(y)+exp(y)log10(y)*sqrt(y)/pow(3.2,4.4)= %11.4f\n\n\r\ g=log(x) = %11.9f\n",x,y, a,b,c,d,e,f,g); }

Page 27: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

/* For application A3_2*/ #include <stdio.h> void main(void) { double degC, degF; printf ("Table of Celsius and Fahrenheit degrees\n\n" " Degrees Degrees \n" " Celsius Fahrenheit \n"); degC = 0.; degF = degC * 9./5. +32.; printf ("%16.2f %20.2f\n", degC, degF); degC += 20.; degF = degC * 9./5. +32.; printf ("%16.2f %20.2f\n", degC, degF); degC += 20.; degF = degC * 9./5. +32.; printf ("%16.2f %20.2f\n", degC, degF);

degC += 20.; degF = degC * 9./5. +32.; printf ("%16.2f %20.2f\n", degC, degF); degC += 20.; degF = degC * 9./5. +32.; printf ("%16.2f %20.2f\n", degC, degF); degC += 20.; degF = degC * 9./5. +32.; printf ("%16.2f %20.2f\n", degC, degF); }

Page 28: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134
Page 29: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

/* Lesson for 3_6 */#include <stdio.h>void main(void){ double xx ; int ii, kk; FILE *inptr; inptr=fopen ("C3_6.IN","r"); fscanf(inptr,"%d",&ii); fscanf(inptr,"%d %lf",&kk,&xx);

fclose(inptr);

printf("ii=%5d\nkk=%5d\nxx=%9.3lf\n",ii, kk, xx); }

Page 30: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

30

•scanf() Example: scanf(“%d”, &x);

•printf() Example: printf(“The value of x is %d\n”, x);

•#include <stdio.h>

Recall

Page 31: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

31

Input/Output

Program

Page 32: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

32

Streams

• Text input or output is dealt with as a sequence of characters

• A stream serves as a channel to convey characters between I/O and programs

Page 33: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

33

Streams: Input -- Example

135 25.5_

1 3 5 2 5 . 5 \n

int item;

float cost;

scanf(“%d %f”, &item, &cost);

input buffer

Page 34: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

34

Streams: Input -- Example (cont)

135 25.5_

1 3 5 2 5 . 5 \n

int item;

float cost;

scanf(“%d %f”, &item, &cost);

item cost

Page 35: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

35

Streams: Input – Example (cont)

135 25.5_

2 5 . 5 \n

int item;

float cost;

scanf(“%d %f”, &item, &cost);

item

135

cost

Page 36: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

36

Streams: Input – Example (cont)

135 25.5_

\n

int item;

float cost;

scanf(“%d %f”, &item, &cost);

item

135

cost

25.5

Page 37: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

37

Streams: Output -- Example

H e l l o ! \n

printf(“Hello!\n”);

output buffer

Page 38: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

38

H e l l o ! \n

printf(“Hello!\n”);

Streams: Output – Example (cont)

Page 39: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

39

e l l o ! \n

H

printf(“Hello!\n”);

Streams: Output – Example (cont)

Page 40: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

40

l l o ! \n

He

printf(“Hello!\n”);

Streams: Output – Example (cont)

Page 41: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

41

l o ! \n

Hel

printf(“Hello!\n”);

Streams: Output – Example (cont)

Page 42: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

42

o ! \n

Hell

printf(“Hello!\n”);

Streams: Output – Example (cont)

Page 43: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

43

! \n

Hello

printf(“Hello!\n”);

Streams: Output – Example (cont)

Page 44: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

44

\n

Hello!

printf(“Hello!\n”);

Streams: Output – Example (cont)

Page 45: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

45

Hello!_

printf(“Hello!\n”);

Streams: Output – Example (cont)

Page 46: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

46

Streams

• From the program's point of view, the characters are queued in a pipe

• The sequence of characters is organized into lines

• Each line: – can have zero or more characters– ends with the "newline" character '\n'

Page 47: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

47

"Standard" Streams • Standard streams:

– stdin - standard input• usually from keyboard

– stdout - standard output• usually to screen

– stderr - standard error• usually to screen

• must have at the top of your program#include <stdio.h>

• can be redirected

Page 48: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

48

stdin: Input

• Data is read in from stdin (into a variable) using the scanf() function

• When input ends, the scanf() function returns a special value: EOF

Page 49: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

49

Example: ReadData

Input name, age, gender, idNumber

Page 50: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

50

#include <stdio.h>

Page 51: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

51

#include <stdio.h>

/*************************************\

Read in important info about a student

\**************************************/

Page 52: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

52

#include <stdio.h> /*************************************\ Read in important info about a student \**************************************/ int main() {

return 0; }

Page 53: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

53

#include <stdio.h> /*************************************\ Read in important info about a student \**************************************/ int main() {

char name[100] ;

float age ;

char gender ;

int idNumber ;

return 0; }

Page 54: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

54

#include <stdio.h>

/*************************************\

Read in important info about a student

\**************************************/

int main()

{

char name[100] ;

float age ;

char gender ;

int idNumber ;

scanf("%s %f %c %d", name, &age, &gender, &idNumber);

return 0;

}

Page 55: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

55

#include <stdio.h> /*************************************\

Read in important info about a student

\**************************************/

int main()

{

char name[100] ;

float age ;

char gender ;

int idNumber ;

scanf("%s %f %c %d", name, &age, &gender, &idNumber);

return 0;

}

Alkady

19.2

M

3825

Input: Akady 19.2 M 3825

Page 56: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

56

stdout:Output

• Data (e.g., from a variable) is written out to stdout using the printf() function.

Page 57: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

57

Example: WriteData

Set name to “Alkady” Set age to 18.2 Set gender to ‘M’ Set idNumber to 3825 Output name, age, gender, idNumber

Page 58: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

58

#include <stdio.h>

/*****************************************\ Write out important info about a student \*****************************************/

int main() { char *name = ”Akady" ; float age = 18.2; char gender = ’M'; int idNumber = 3825 ;

printf("%s\n%f\n%c\n%d\n", name, age, gender, idNumber); return 0; }

Alkady18.2M3825_

Page 59: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

59

Formatted Input and Output• General form:printf(format-control-string, other-arguments);

scanf(format-control-string, other-arguments);

• Examples:printf("%s\n%f\n%c\n%d\n",name,age,gender,idNumber);

scanf("%s %f %c %d", name, &age, &gender, &idNumber);

Page 60: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

60

• Describes the format of the data for output• Contains “conversion specifiers” and “literal

characters”

Example:printf(“%s is %d years old.\n”, name, age);

printf -- Format-Control-String

Page 61: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

61

• Describes the format of the data for output• Contains “conversion specifiers” and “literal

characters”

Example:printf(“%s is %d years old.\n”, name, age);

conversion specifiers

printf -- Format-Control-String (cont)

Page 62: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

62

printf(“%s is %d years old.\n”, name, age);

literal characters

• Describes the format of the data for output• Contains “conversion specifiers” and “literal

characters”

Example:

printf -- Format-Control-String (cont)

Page 63: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

63

• For printf: variables containing data for output

Example:printf(“(“%s is %d years old.\n”, name, age);

printf -- Other-Arguments

Page 64: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

64

• Describes the format of the data given as input• Contains “conversion specifiers”

scanf -- Format-Control-String

Example:scanf("%s %f %c %d", name, &age, &gender,&id);

conversion specifiers

Page 65: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

65

• For scanf: “pointers” to variables where the input will be stored

scanf -- Other-Arguments

scanf("%s %f %c %d", name, &age, &gender, &id);

Example:

Page 66: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

66

• ‘&’ is for scanf only!

scanf("%s %f %c %d", name, &age, &gender, &id);

scanf -- Other-Arguments (cont)

• For scanf: “pointers” to variables in which the input will be stored

Example:

• Variables of type int, float or char need ‘&’• Do NOT use ‘&’ with strings!

Page 67: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

67

Common Conversion Specifiers for Numerical Information

• decimal integer: %dprintf(“What is %d plus %d?\n”, x, y);scanf(“%d”, &sum);

• float: %fprintf(“%f squared is...? ”, x);

scanf(“%f”, &ans);

• double: printf(“%f squared is...? ”, x);

scanf(“%lf”, &ans);

Page 68: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

68

Conversion Specifiers for Alphanumeric Information

• char: %cprintf(“What letter follows %c?\n”,ch);scanf(“%c”, &nextchar);

• string: %sprintf(“Name: %s\n”, name);scanf(“%s”, name);

Page 69: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

69

• i or d: display a signed decimal integer• f: display a floating point value• e or E: display a floating point value in

exponential notation• g or G: display a floating point value in either f form or e form

• L: placed before any float conversion specifier to indicate that a long double is displayed

printf: Conversion Specifiers

Page 70: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

70

scanf: Conversion Specifiers

• d: read an optionally signed decimal integer • i: read an optionally signed decimal, octal, or

hexadecimal integer

i and d: the argument is a “pointer” to an integerint idNumber;

scanf("%d", &idNumber);

Page 71: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

71

scanf: Conversion Specifiers (cont)

• h or l: placed before any integer conversion specifiers to indicate that a short or long integer is to be input long int idNumber;

scanf("%ld", &idNumber);

• l or L: placed before any float conversion specifiers to indicate that a double or long double is to be input

Page 72: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

72

Conversion Example

Input octal integer Output integer as decimal

Page 73: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

73

Conversion Example (cont)#include <stdio.h>

int main()

{

int i ;

scanf("%o", &i);

printf("%d\n", i);

return 0;

}

Page 74: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

74

Conversion Example (cont)#include <stdio.h>

int main()

{

int i ;

scanf("%o", &i);

printf("%d\n", i);

return 0;

}

_

Page 75: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

75

Conversion Example (cont) #include <stdio.h>

int main()

{

int i ;

scanf("%o", &i);

printf("%d\n", i);

return 0;

}

_

Page 76: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

76

Conversion Example (cont)#include <stdio.h>

int main()

{

int i ;

scanf("%o", &i);

printf("%d\n", i);

return 0;

}

_

i

Page 77: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

77

Conversion Example (cont)#include <stdio.h>

int main()

{

int i ;

scanf("%o", &i);

printf("%d\n", i);

return 0;

}

_

i

Page 78: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

78

Conversion Example (cont)#include <stdio.h>

int main()

{

int i ;

scanf("%o", &i);

printf("%d\n", i);

return 0;

}

70_

i

Page 79: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

79

Conversion Example (cont)#include <stdio.h>

int main()

{

int i ;

scanf("%o", &i);

printf("%d\n", i);

return 0;

}

70_

i

56

Page 80: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

80

Conversion Example (cont)#include <stdio.h>

int main()

{

int i ;

scanf("%o", &i);

printf("%d\n", i);

return 0;

}

70_

i

56

Page 81: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

81

Conversion Example (cont)#include <stdio.h>

int main()

{

int i ;

scanf("%o", &i);

printf("%d\n", i);

return 0;

}

7056_

i

56

Page 82: GE 211 Programming in C Dr. Ahmed Telba Room :Ac -134

82

Skipping Characters in Input Stream • Skipping blank spaces

scanf("%d %d %d", &day, &month, &year);

• Skipping dashes– Enter data as dd-mm-yyyy: 16-3-1999 – Store each number in date variables

scanf("%d-%d-%d", &day, &month, &year);