programming c for engineers an exercise is posted on the web site! due in one week single submission
TRANSCRIPT
![Page 1: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/1.jpg)
Programming C for Engineers
An exercise is posted on the web site! Due in one week Single submission
![Page 2: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/2.jpg)
Selection Statements
Selects statements to execute based on the value of an expression The expression is sometimes called the
controlling expression Selection statements:
if statement switch statement
![Page 3: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/3.jpg)
Selection statements: if
used to execute conditionally a statement or block of code.
if (expression)
statement
If expression is true, statement is executed (what is true?).
statement can be replaced by a block of statements, enclosed in curly braces.
![Page 4: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/4.jpg)
An example
/* This program displays the absolute value of a number given by the user */
#include <stdio.h>
int main(){
double num;
printf("Please enter a real number: ");scanf("%lf", &num);if (num<0)
num = -num;
printf("The absolute value is %g\n", num);
return 0;}
![Page 5: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/5.jpg)
if-else statement
if (expression) statement1
else statement2
if expression is true, statement1 is executed. if expression is false, statement2 is executed both statements can be (and very often are)
replaced by blocks of statements (“compound statements”)
![Page 6: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/6.jpg)
An example (fragment)
int first, second, min;/* … */if (first < second) { min = first; printf ("The first number is smaller than the second.\n");} else { min = second; printf ("The second number is smaller than the first\n");}
printf("The smaller number is equal to %d\n", min);
![Page 7: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/7.jpg)
True or false
In C, every expression has a numeric value An expression is ‘true’ when its value is
non-zero If it is zero, it is false Therefore, in the following –
if (expression) statement
statement is executed if expression is non zero.
![Page 8: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/8.jpg)
More about operators
In C, every expression has a numeric value
When using arithmetical operators (+, -, *, /) this is straightforward The value of A+B is the sum of A and B And so on…
![Page 9: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/9.jpg)
More about operators
Expressions with relational operators (<, <=, >, >=, etc.) have values as well (intuitively, we are used to thinking about them as ‘true’ or ‘false’)
A < B evaluates to zero if A is larger than or equal to B, and some non-zero value if A is smaller than B
The exact non-zero value varies (and is not important for that matter)
![Page 10: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/10.jpg)
Relational operators
They are: A == B (Note the difference from A = B!!!!!) A != B A < B A > B A <= B A >= B
The value of the expression is non-zero if it’s true, zero if it’s false
![Page 11: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/11.jpg)
An exampleint a, b;
printf("Enter two numbers\n");scanf("%d%d", &a, &b);
if (a == b){
printf("The numbers equal %d\n", a);printf("The expression a == b is %d\n", a ==
b);}else{
printf("The numbers are not equal\n");printf("The expression a == b is %d\n", a ==
b);}
![Page 12: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/12.jpg)
The assignment operator =
The assignment operator is also an operator. Hence, expressions involving it have a numeric value.
This value equals to whatever appears on the right of the assignment operator
For example: (x = 4) evaluates to 4 (y = 0) evaluates to 0
![Page 13: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/13.jpg)
A very common mistake
Very often a programmer might confuse between the equality operator and the assignment operator: if (x==4) … if (x=4) …
The second is usually a mistake, but legal in C so the compiler doesn’t warn us about it!
![Page 14: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/14.jpg)
Example
/* This program exemplifies the difference between the equality relational
operator and the assignment operator. */
#include <stdio.h>
int main(){
int i = 2;
printf("i = %d\n", i);printf("(i==4) = %d\n", i==4);printf("i = %d\n", i);printf("(i=4) = %d\n", i=4);printf("i = %d\n", i);
}
![Page 15: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/15.jpg)
Example
/* This program exemplifies the difference between the equality relational
operator and the assignment operator. */
#include <stdio.h>
int main(){
int i = 2;
printf("i = %d\n", i);printf("(i==4) = %d\n", i==4);printf("i = %d\n", i);printf("(i=4) = %d\n", i=4);printf("i = %d\n", i);
}
![Page 16: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/16.jpg)
Example
/* This program exemplifies the difference between the equality relational
operator and the assignment operator. */
#include <stdio.h>
int main(){
int i = 2;
printf("i = %d\n", i);printf("(i==4) = %d\n", i==4);printf("i = %d\n", i);printf("(i=4) = %d\n", i=4);printf("i = %d\n", i);
}
i= 2
![Page 17: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/17.jpg)
Example
/* This program exemplifies the difference between the equality relational
operator and the assignment operator. */
#include <stdio.h>
int main(){
int i = 2;
printf("i = %d\n", i);printf("(i==4) = %d\n", i==4);printf("i = %d\n", i);printf("(i=4) = %d\n", i=4);printf("i = %d\n", i);
}
![Page 18: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/18.jpg)
Example
/* This program exemplifies the difference between the equality relational
operator and the assignment operator. */
#include <stdio.h>
int main(){
int i = 2;
printf("i = %d\n", i);printf("(i==4) = %d\n", i==4);printf("i = %d\n", i);printf("(i=4) = %d\n", i=4);printf("i = %d\n", i);
}
(i==4) = 0
![Page 19: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/19.jpg)
Example
/* This program exemplifies the difference between the equality relational
operator and the assignment operator. */
#include <stdio.h>
int main(){
int i = 2;
printf("i = %d\n", i);printf("(i==4) = %d\n", i==4);printf("i = %d\n", i);printf("(i=4) = %d\n", i=4);printf("i = %d\n", i);
}
![Page 20: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/20.jpg)
Example
/* This program exemplifies the difference between the equality relational
operator and the assignment operator. */
#include <stdio.h>
int main(){
int i = 2;
printf("i = %d\n", i);printf("(i==4) = %d\n", i==4);printf("i = %d\n", i);printf("(i=4) = %d\n", i=4);printf("i = %d\n", i);
}
i= 2
![Page 21: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/21.jpg)
Example
/* This program exemplifies the difference between the equality relational
operator and the assignment operator. */
#include <stdio.h>
int main(){
int i = 2;
printf("i = %d\n", i);printf("(i==4) = %d\n", i==4);printf("i = %d\n", i);printf("(i=4) = %d\n", i=4);printf("i = %d\n", i);
}
![Page 22: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/22.jpg)
Example
/* This program exemplifies the difference between the equality relational
operator and the assignment operator. */
#include <stdio.h>
int main(){
int i = 2;
printf("i = %d\n", i);printf("(i==4) = %d\n", i==4);printf("i = %d\n", i);printf("(i=4) = %d\n", i=4);printf("i = %d\n", i);
}
(i=4) = 4
![Page 23: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/23.jpg)
Example
/* This program exemplifies the difference between the equality relational
operator and the assignment operator. */
#include <stdio.h>
int main(){
int i = 2;
printf("i = %d\n", i);printf("(i==4) = %d\n", i==4);printf("i = %d\n", i);printf("(i=4) = %d\n", i=4);printf("i = %d\n", i);
}
![Page 24: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/24.jpg)
Example
/* This program exemplifies the difference between the equality relational
operator and the assignment operator. */
#include <stdio.h>
int main(){
int i = 2;
printf("i = %d\n", i);printf("(i==4) = %d\n", i==4);printf("i = %d\n", i);printf("(i=4) = %d\n", i=4);printf("i = %d\n", i);
}
i= 4
![Page 25: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/25.jpg)
Logical operators
Allows to evaluate two or more expressions - !A – ‘not’ - True when A is not, and vice
versa. A && B – ‘and’ - True when both A and B
are true A || B – ‘or’ (inclusive or) - True when
either A or B (or both) are true
![Page 26: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/26.jpg)
A silly example
#include <stdio.h>
int main(void) {
int grade;
printf("Please enter your grade: ");scanf("%d", &grade);
if (grade < 0 || grade > 100)printf("This is not a valid grade!\n");
elseprintf("This is indeed a grade.\n");
return 0;}
![Page 27: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/27.jpg)
else if
if statements distinguish between exactly 2 cases and execute different code in each case
The else-if construction allows for a multi-way decision
![Page 28: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/28.jpg)
else if
if (expression)
statement
else if (expression)
statement
else if (expression)
statement
else
statement
![Page 29: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/29.jpg)
An example
if (grade >= 90) printf ("A\n");
else if (grade >= 80) printf ("B\n");
else if (grade >= 70) printf ("C\n");
else if (grade >= 60) printf ("D\n");
else printf ("F\n");
![Page 30: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/30.jpg)
Validating input
When getting input from the user, it is highly recommended to check whether it is valid.
If it’s not, you should display an appropriate message and return a non-zero value.
For example –if (grade < 0 || grade > 100){
printf(“Invalid input!\n”);return 1;
}
![Page 31: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/31.jpg)
The return keyword
For now, used to terminate the program and return a value to the operating system
If the program is successful the return value should be zero; non-zero otherwise
The exact nature of this keyword will become clear in the future
![Page 32: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/32.jpg)
Exercise
Input – An English letter
Output – If input is a lowercase letter – the corresponding
uppercase letter If input is an uppercase letter - corresponding
lowercase letter Notes –
1. You do not need the specific ASCII values!!2. Remember to check for input validity!
![Page 33: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/33.jpg)
Solution
#include <stdio.h>
int main( ){
char c;
printf("Please enter an english letter: ");scanf("%c", &c);
if (c <= 'z' && c >= 'a')printf("%c in uppercase is %c\n", c, c-'a'+'A');
else if (c <= 'Z' && c >= 'A')printf("%c in lowercase is %c\n", c, c-'A'+'a');
else{
printf("%c is not an english letter!\n", c);return 1;
}
return 0;}
![Page 34: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/34.jpg)
The ?: operator
expr1 ? expr2 : expr3 Nicer way to write:
(expr1)? expr2 : expr3 If expr1 is true (non-zero), expr2 is
evaluated. Otherwise, expr3 is evaluated
![Page 35: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/35.jpg)
The ?: operator
#include <stdio.h>
int main(){
int i, j, min;
printf("Please enter two numbers: ");scanf("%d%d", &i, &j);
min = (i < j)? i : j;printf("The minimum between %d and %d is %d\n", i, j, min);
return 0;}
![Page 36: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/36.jpg)
The switch statement a multiway conditional statement
similar to if-else if-else allows the selection of an arbitrary number of choices
based on an integer value
switch (expression) { case const-expr:
statements case const-expr:
statements … default:
statements}
![Page 37: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/37.jpg)
The switch statement
expression must have an integer value when the switch statement is executed:
the expression is evaluated if a case matches the value of the expression,
the program jumps to the first statement after that case label
otherwise, the default case is selected the default is optional
![Page 38: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/38.jpg)
That grade example again
switch (grade/10) { case 10: case 9:
printf ("A\n"); break;
case 8: printf ("B\n"); break;
case 7: printf ("C\n"); break;
case 6: printf ("D\n"); break;
default: printf ("F\n");
}
![Page 39: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/39.jpg)
Give me a break
when the switch transfers to the chosen case, it starts executing statements at that point
it will “fall through” to the next case unless you “break out”
break causes the program to immediately jump to the next statement after the switch statement
![Page 40: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/40.jpg)
A more interesting example
#include <stdio.h>
int main( ) {
double n1, n2, res;char op;
printf("Please enter two numbers: ");scanf("%lf%lf", &n1, &n2);
printf("Please enter an arithmetical operator (+, -, * or /): ");scanf(" %c", &op); /* The space before the %c will be explained... */
![Page 41: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/41.jpg)
A more interesting example
switch(op) {case '+':
res = n1+n2;break;
case '-':res = n1-n2;break;
case '*':res = n1*n2;break;
case '/': /* We're not checking for division by zero for clarity... */res = n1/n2;break;
default:printf("%c is an invalid arithmetical operator!\n", op);return 1;
}
/* Display the expression and its result */printf("%g %c %g = %g\n", n1, op, n2, res);
return 0;}
![Page 42: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/42.jpg)
Exercise
Write a program that accepts a number between 1 and 100 from the user. If there is a coin of that value in cents, it should display its name. Otherwise, it should report that there is no such coin
1 = cent, 5 = nickel, 10 = dime, 25 = quarter, 100 = dollar
Remember to check for the validity of the input!
![Page 43: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/43.jpg)
Solution
/#include <stdio.h>
int main(){
int num;
printf("Please enter a number from 1 to 100: ");scanf("%d", &num);
/* Make sure the input is valid */if (num<1 || num>100) {
printf("Invalid input!\n");return 1;
}
/* Display the correct coin name, or a default message if there's no such coin */switch (num) {case 1:
printf("It's a cent!\n");break;
case 5:printf("It's a nickel!\n");break;
case 10:printf("It's a dime!\n");break;
case 25:printf("It's a quarter!\n");break;
case 100:printf("It's a whole dollar!\n");break;
default:printf("It's not a coin!\n");
}
return 0;}
![Page 44: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/44.jpg)
Debugging
It is virtually impossible to program without errors
Syntax errors are detected by the compiler
However, often a program has no syntax errors and compiles, but still doesn’t perform as desired
![Page 45: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/45.jpg)
Debugging
Debuggers are software tools designed to help find software bugs
Both Visual C and the lcc compiler include a debugger
![Page 46: Programming C for Engineers An exercise is posted on the web site! Due in one week Single submission](https://reader035.vdocument.in/reader035/viewer/2022081603/56649f1f5503460f94c37c5a/html5/thumbnails/46.jpg)
Debugging
The debugger allows us to – Execute the program one line at a time At each step see the values of all
variables and expressions Run the program up to a pre-specified
point And more…