eng1410 c programming: topic #3 “c: important constructs”
TRANSCRIPT
ENG1410C Programming: Topic #3“C: Important Constructs”
S. AreibiSchool of EngineeringUniversity of Guelph
Topics
Introduction to Programming Conditions & Decisions in C .. Repetitions & Loops in C .. Arrays and strings in C .. Functions in C ..
The If Statement
Syntax: if (expression) statement; If the expression is true (not zero), the statement is executed. If the expression is false, it is not executed.
You can group multiple expressions together with braces:if (expression) {statement 1;statement 2;statement 3;
}
5
Conditional Statements
Example:if (age < 0) {
printf ("warning: negative age\n");age = -age;
}
Syntax:if (condition) statementif (condition) statement else statement
Rules:• the condition is an int ! (no booleans)• parentheses required around conditional expression• use curly braces to make a compound statement
6
• The flowchart segment below shows a decision structure with only one action to perform. It is expressed as an if statement in C code.
if (x < y)
a = x * 2;
Flowchart C Code
YESNOx < y?
Calculate a as x times 2.
Decision Structure
7
Alternative Decision Structure
8
• The flowchart segment below shows a decision structure with two actions to perform.
• It is expressed as an if-else statement in C code.
The If/Else Statement o Syntax: if (expression)
statement_1;else
statement_2;o If the expression is true, statement_1 will be
executed, otherwise, statement_2 will be.
9
if (myVal < 3) printf (“myVal is less than 3.\n”);
else printf (“myVal is greater than or
equal to 3.\n”);
The flowchart segment below shows how a decision structure is expressed in C as an if/else statement.
YESNOx < y?
Calculate a as x times 2.
Calculate a as x plus y.
if (x < y) /* Yes */
a = x * 2;
Else /* No */
a = x + y;
Flowchart C Code
10
Decision Structure
More ConditionalsExample:
if (x < 0)printf ("x is less than 0\n");
else if (x == 0)printf ("x is equal to 0\n");
elseprintf ("x is greater than 0\n");
11
1. When x < 0 the system will print x is less than 0 and exit
2. When x >= 0 the system will check the next two statements
3. If x == 0 the system will print x is equal to 0
4. If x != 0 the system will print x is greater than 0
CASEyears_employed
1 2 3 Other
bonus = 100 bonus = 200 bonus = 400 bonus = 800
If years_employed = 1, bonus is set to 100
If years_employed = 2, bonus is set to 200
If years_employed = 3, bonus is set to 400
If years_employed is any other value, bonus is set to 800
Case Structure
12
The switch constructs has the following form:
switch(condition){
case template_1 : statement(s);break;
case template_2 : statement(s);break;
case template_3 : statement(s);break;
……case template_n : statement(s);
break;
default : statement(s);}next_statement;
Switch/Case Statement
13
Loops
• flow control– break – exit innermost loop– continue – perform next iteration of loop
• Note, all these forms permit one statement to be executed. By enclosing in brackets we create a block of statements.
for (i = 0; i < MAXVALUE; i++) {dowork();
}
while (c != 12) {dowork();
}
do {dowork();
} while (c < 12);
16
• The flowchart segment below shows a repetition structure expressed in C++ as a while loop.
while (x < y)
x++;
Flowchart C Code
x < y? Add 1 to xYES
Repetition Structure
17
While Loops
Example:/* print "hi" forever */while (1)printf ("hi");
Syntax:while (condition)statement
Rules (again):• the condition is an int ! (no booleans)• parentheses required around conditional expression• use curly braces to make a compound statement
18
• The action performed by a repetition structure must eventually cause the loop to terminate. Otherwise, an infinite loop is created.
• In this flowchart segment, x is never changed. Once the loop starts, it will never end.
• QUESTION: How can this flowchart be modified so it is no longer an infinite loop?
x < y? Display xYES
Controlling a Repetition Structure
19
ANSWER:By adding an action within the repetition that changes the value of x.
x < y? Display x Add 1 to xYES
Controlling a Repetition Structure
20
The For Loopo Syntax: for (initialization; test; increment) {statements;}o The for loop will first perform the initialization. Then, as
long is test is TRUE, it will execute statements. After each execution, it will increment.
21
The For Loopo Syntax: for (initialization; test; increment)
{statements;}o The for loop will first perform the
initialization. Then, as long is test is TRUE, it will execute statements. After each execution, it will increment.
for (cntr = 0; cntr < 3; cntr = cntr + 1) {printf(“ Counter = %d\n”, cntr);
}
Counter = 0;Counter = 1;Counter = 2;
22
For LoopsExample:
/* print "hi" three times */int i; /* i continues to exist when loop ends */for (i = 0; i < 3 ; i++)printf ("hi");
Syntax:for (statement1; condition; statement2)statement3;
Equivalent to:statement1;while (condition) {statement3;statement2;
}
23
For Loop Example/* print squares up to 100 */main ( ){
int j, up = 100;for (j = 0; j * j <= up; j++)printf ("%d \n", j * j);
}
24
Note:• can’t do: for (int j = 0; ...• waste of one multiplication per iteration
Example (cont’d)
/* print squares up to 100 */void main ( ){
int j, up = 100, sq;for (j = 0; (sq = j * j) <= up; j++)printf ("%d \n", sq);
}
25
Note:• recall equivalence to a while loop: condition is evaluated before the loop body
#include <stdio.h>int main (){
int i, j;for (i = 0; i < 10; i++){
printf ("\n");for (j = 0; j < i+1; j++ )
printf ( "A");}printf("\n");return 0;
}
Loop within a Loop
26
Definition – Array
28
• A collection of objects of the same type stored contiguously in memory under one name
• May be type of any kind of variable• May even be collection of arrays!
• For ease of access to any member of array• For passing to functions as a group
Arraysint years[45];float temperatures [11];void main () {years[0] = 2000;temperatures[11] = -45.67;
}
Rules:• indices start at zero• maximum valid index is the size of the array minus 1• but C lets you go beyond the declared boundaries• temperatures[11] is illegal
29
CharactersCharacters
char a, b, c1, c2;a = '0'; b = '\037'; c1 = 'K'; c2 = c1 + 1;
• Assigns values: 48, 31, 75, 76• The sequences '0',...,'9', 'a',...,'z', 'A',...,'Z' contain characters numbered consecutively
Castingprintf ("%c %d\n", c1, (int) c1);
• Outputs: K 75
A character constant is enclosed in single quotes.
Note
30
StringsStrings are '\0'-terminated arrays of char :
char s[3] = "hi"; /* invisible '\0' */char t[3] = {'h', 'i', '\0'};
String operations#include <string.h>strlen ("there"); /* returns 5 */strcpy (s, t); /* copy t to s */strcmp (s, t) /* alphabetical comparison */
Use single quotes for character constants. Use double quotes for string constants.
Note
31
Basics of FunctionsDefinition: A function in C programming language is a set of statements that take inputs from the caller of the function, it performs some computation and produces some output. The results may be returned to the caller of a function.
Syntax:Return_type function_name (set_of_inputs);
33
Name of the functionVariable Type it intends to return
Inputs that might be provided to the function
/* Increment; takes an integer argument and * returns the argument plus one.*/
int incr (int i){int j;j = i + 1;return j;
}
main () {int k, m = 4;k = incr(m);printf ("k = %d, m = %d\n", k, m);
}
Functions
34
output: k = 5, m = 4
More about Functions
• might have no return type, and no return statement:void printhi (){printf ("hi\n");
}
• parameters are copied and can be modifiedint incr (int i){i++;return i;
}
• default (unspecified) return type is int
35
/* Program to calculate the product of two numbers */
#include <stdio.h>int product(int x, int y);int main (){
int a,b,c;/* Input the first number */printf ("Enter a number between 1
and 100: ");scanf ("%d", &a);
/* Input the second number */printf ("Enter another number
between 1 and 100: ");scanf ("%d", &b);
/* Calculate and display the product */c = product (a, b);printf ("%d times %d = %d \n", a, b, c);return 0;
}
/* Functions returns the product of its two arguments */
int product (int x, int y){
return (x*y);}
Functions
36
Variables within Functions
void no_incr (int i){
i++;}
void main () {int x = 5;no_incr(x);printf ("%d\n", x);
}
But this does not work:
37
Summary
There are several structures that are used in many programming languages including “C” that allow to build more complex and sophisticated applications.
The constructs include:a. Decision making with “If-else” and “case” statements b. Looping using “for” and “while”, “do while”c. Modular programming structures in the form of
“Functions”d. Abstract data types using “Arrays” and “Strings”.
39
C: Resourceso YouTube:
https://www.youtube.com/watch?v=3pwxRgJQW54 https://www.youtube.com/watch?v=3lQEunpmtRA
o Documents: https://en.wikibooks.org/wiki/A_Little_C_Primer/C_Control_Constructs https://webdocs.cs.ualberta.ca/~tony/C201/Lectures/LecNotes/Lec04/lec-04.sli.html
o Examples: https://ict.senecacollege.ca/~btp100/pages/content/const.html
o Test Yourself: https://www.javatpoint.com/c-quiz https://www.tutorialspoint.com/cprogramming/cprogramming_online_quiz.htm https://data-flair.training/blogs/online-c-programming-test/
41