0% found this document useful (0 votes)
97 views53 pages

Harvard How To Use Scratch

The document discusses various logic and conditional expressions in C programming including: - If/else statements for checking conditions - Logical operators like && and || for combining expressions - Switch statements for multiple conditions - Ternary operator for one-line if/else expressions - Loops like while, for, and do-while for repetition - Functions for abstraction, modularity, and reusability by encapsulating code

Uploaded by

Ravish Aggarwal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
97 views53 pages

Harvard How To Use Scratch

The document discusses various logic and conditional expressions in C programming including: - If/else statements for checking conditions - Logical operators like && and || for combining expressions - Switch statements for multiple conditions - Ternary operator for one-line if/else expressions - Loops like while, for, and do-while for repetition - Functions for abstraction, modularity, and reusability by encapsulating code

Uploaded by

Ravish Aggarwal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 53

Conditions and Boolean Expressions

Logic in C
#include <cs50.h>
#include <stdio.h>
int main(void)
{
printf("Give me an integer: ");
int answer = GetInt();
if (answer > 0)
{
printf("You picked a positive number!\n");
}
}

Boolean Expressions
answer > 0
answer < 0
answer >= 0
answer <= 0
answer == 0
answer != 0
!(answer > 0)

Combining Expressions
Logical AND

answer > 0 && answer < 5

Logical OR

answer < 0 || answer > 5

Combining Expressions
#include <cs50.h>
#include <stdio.h>
int main(void)
{
printf("Give me an integer: ");
int answer = GetInt();
if (answer > 0 && answer < 5)
{
printf("You picked a number between 0 and 5!\n");
}
}

if else
#include <cs50.h>
#include <stdio.h>
int main(void)
{
printf("Give me an integer: ");
int n = GetInt();
if (n > 0)
{
printf("You picked a positive number!\n");
}
else
{
printf("You picked a negative number or 0!\n");
}
}

if else if else
#include <cs50.h>
#include <stdio.h>
int main(void)
{
printf("Give me an integer: ");
int n = GetInt();
if (n > 0)
{
printf("You picked a positive number!\n");
}
else if (n < 0)
{
printf("You picked a negative number!\n");
}
else
{
printf("You picked 0!\n");
}
}

#include <cs50.h>
#include <stdio.h>
int main(void)
{
printf("Enter your grade: ");
int n = GetInt();
if (n > 90)
{
printf("You got an A!\n");
}
if (n > 80)
{
printf("You got a B!\n");
}
if (n > 70)
{
printf("You got a C!\n");
}
if (n > 60)
{
printf("You got a D!\n");
}
}

#include <cs50.h>
#include <stdio.h>
int main(void)
{
printf("Enter your grade: ");
int n = GetInt();
if (n > 90)
{
printf("You got an A!\n");
}
else if (n > 80)
{
printf("You got a B!\n");
}
else if (n > 70)
{
printf("You got a C!\n");
}
else if (n > 60)
{
printf("You got a D!\n");
}
}

int main(void)
{
printf("Give me an integer between 1 and 3: ");
int n = GetInt();

switch

switch (n)
{
case 1:
printf("You picked a low number.\n");
break;
case 2:
printf("You picked a medium number.\n");
break;
case 3:
printf("You picked a high number.\n");
break;
default:
printf("Invalid.\n");
}
}

int main(void)
{
printf("Give me an integer between 1 and 3: ");
int n = GetInt();

switch

switch (n)
{
case 1:
case 2:
printf("Didn't pick a high number.\n");
break;
case 3:
printf("You picked a high number.\n");
break;
default:
printf("Invalid.\n");
}
}

Ternary Operator
#include <cs50.h>
#include <stdio.h>

#include <cs50.h>
#include <stdio.h>

int main(void)
{
printf("Give me an integer: ");
int n = GetInt();

int main(void)
{
printf("Give me an integer: ");
int n = GetInt();

string s;
if (n > 100)
{
s = "high";
}
else
{
s = "low";
}

string s = (n > 100) ? "high" : "low";

printf("You picked a %s number!\n", s);


}

printf("You picked a %s number!\n", s);


}

Loops

uh oh
#include <cs50.h>
#include <stdio.h>
int main(void)
{
printf("This is the song that never ends,\n");
printf("it just goes on and on and on...\n");
printf("This is the song that never ends,\n");
printf("it just goes on and on and on...\n");
printf("This is the song that never ends,\n");
printf("it just goes on and on and on...\n");
printf("This is the song that never ends,\n");
printf("it just goes on and on and on...\n");
// ... how do we keep going???
}

while loop
while (condition)
{
// execute code
}

while loop

#include <cs50.h>
#include <stdio.h>
int main(void)
{
while (true)
{
printf("This is the song that never ends,\n");
printf("it just goes on and on and on...\n");
}
}

with a variable and condition


#include <cs50.h>
#include <stdio.h>
int main(void)
{
int i = 10;
while (i > 0)
{
printf("Totally loopy!\n");
i--;
}
}

for loop
for (initialization; condition; update)
{
// execute this code
}

for (initialization; condition; update)

#include <cs50.h>
#include <stdio.h>

#include <cs50.h>
#include <stdio.h>

int main(void)
{
int i = 10;
while (i > 0)
{
printf("Totally loopy!\n");
i--;
}
}

int main(void)
{
for (int i = 10; i > 0; i--)
{
printf("Totally loopy!\n");
}
}

using the counter variable

#include <cs50.h>
#include <stdio.h>
int main(void)
{
for (int i = 10; i > 0; i--)
{
printf("Counting down ... %i\n", i);
}
}

input validation
#include <cs50.h>
#include <stdio.h>
int main(void)
{
printf("Enter a positive number: ");
int input = GetInt();

while (input <= 0)
{
printf("Enter a positive number: ");
input = GetInt();
}
}

do-while loop
#include <cs50.h>
#include <stdio.h>
int main(void)
{
int input;
do
{
printf("Enter a positive number: ");
input = GetInt();
}
while (input <= 0);
}

breaking
#include <cs50.h>
#include <stdio.h>
int main(void)
{
int input;
do
{
printf("Enter a positive number: ");
input = GetInt();
if (input > 0)
{
break;
}
}
while (true);
}

functions

functions from algebra


f(x) = x + 5

15

f(x)

20

functions, more generally

input

output

organization
simplification
reusability

abstraction
int quadruple(int input)
{
return input * 4;
}
int quadruple(int input)
{
return input << 2;
}
int quadruple(int input)
{
// ??? no need to know!
}

abstraction
#include <stdio.h>
#include <stdio.h>
int main(void)
{
int x = 2;
int y = 3;
int z = 4;
x = x * 3;
y = y * 3;
z = z * 3;
}

int cube(int input);


int main(void)
{
int x = 2;
int y = 3;
int z = 4;
x = cube(x);
y = cube(y);
z = cube(z);
}

fix all three

fix just once!

int cube(int input)


{
return input * 3;
}

we call these

parameters
(arguments)

return value

function definition
int cube(int input)
{
int output = input * input * input;
return output;
}

function header
int cube(int input)
{
int output = input * input * input;
return output;
}

return
type name

function header
parameters

int cube(int input)


{
int output = input * input * input;
return output;
}

function body
int cube(int input)
{
int output = input * input * input;
return output;
}
return value

return
type name

parameters

int cube(int input)


{
int output = input * input * input;
return output;
}
return value

using a function
#include <stdio.h>
int cube(int input)
{
int output = input * input * input;
return output;
}
int main(void)
{
int x = 2;
printf("x is %i\n", x);
x = cube(x);
printf("x is %i\n", x);
}

oops, order matters!


#include <stdio.h>
int main(void)
{
int x = 2;
printf("x is %i\n", x);
x = cube(x);
printf("x is %i\n", x);
}
int cube(int input)
{
int output = input * input * input;
return output;
}

function prototype
#include <stdio.h>
int cube(int input);
int main(void)
{
int x = 2;
printf("x is %i\n", x);
x = cube(x);
printf("x is %i\n", x);
}
int cube(int input)
{
int output = input * input * input;
return output;
}

parameter vs argument
parameter

argument

int cube(int input)


{
int output = input * input * input;
return output;
}

int main(void)
{
int x = 2;
x = cube(x);
printf("x is %i\n", x);
}

side eects
#include <stdio.h>
int main(void)
{
while (true)
{
sing();
}
}
void sing()
{
printf("This is the song that never ends,\n");
printf("it just goes on and on and on...\n");
}

#include <stdio.h>
void swap(int a, int b);

what does this program do?

int main(void)
{
int x = 1;
int y = 2;
swap(x, y);
printf("x is %i\n", x);
printf("y is %i\n", y);
}
void swap(int a, int b)
{
int tmp = a;
a = b;
b = tmp;
}

#include <stdio.h>
void swap(int a, int b);

stack

int main(void)
{
int x = 1;
int y = 2;
swap(x, y);
printf("x is %i\n", x);
printf("y is %i\n", y);
}
void swap(int a, int b)
{
int tmp = a;
a = b;
b = tmp;
}

#include <stdio.h>
void swap(int a, int b);

int main(void)
{
int x = 1;
int y = 2;
swap(x, y);
printf("x is %i\n", x);
printf("y is %i\n", y);
}

main

void swap(int a, int b)


{
int tmp = a;
a = b;
b = tmp;
}

#include <stdio.h>
void swap(int a, int b);

int main(void)
{
int x = 1;
int y = 2;
swap(x, y);
printf("x is %i\n", x);
printf("y is %i\n", y);
}

swap

main

void swap(int a, int b)


{
int tmp = a;
a = b;
b = tmp;
}

#include <stdio.h>
void swap(int a, int b);

int main(void)
{
int x = 1;
int y = 2;
swap(x, y);
printf("x is %i\n", x);
printf("y is %i\n", y);
}

swap

main

tmp

void swap(int a, int b)


{
int tmp = a;
a = b;
b = tmp;
}

#include <stdio.h>
void swap(int a, int b);

int main(void)
{
int x = 1;
int y = 2;
swap(x, y);
printf("x is %i\n", x);
printf("y is %i\n", y);
}

swap

main

tmp

void swap(int a, int b)


{
int tmp = a;
a = b;
b = tmp;
}

#include <stdio.h>
void swap(int a, int b);

int main(void)
{
int x = 1;
int y = 2;
swap(x, y);
printf("x is %i\n", x);
printf("y is %i\n", y);
}

swap

main

tmp

void swap(int a, int b)


{
int tmp = a;
a = b;
b = tmp;
}

#include <stdio.h>
void swap(int a, int b);

int main(void)
{
int x = 1;
int y = 2;
swap(x, y);
printf("x is %i\n", x);
printf("y is %i\n", y);
}

swap

main

tmp

void swap(int a, int b)


{
int tmp = a;
a = b;
b = tmp;
}

#include <stdio.h>
void swap(int a, int b);

int main(void)
{
int x = 1;
int y = 2;
swap(x, y);
printf("x is %i\n", x);
printf("y is %i\n", y);
}

main

void swap(int a, int b)


{
int tmp = a;
a = b;
b = tmp;
}

#include <stdio.h>
void swap(int a, int b);

int main(void)
{
int x = 1;
int y = 2;
swap(x, y);
printf("x is %i\n", x);
printf("y is %i\n", y);
}

main

void swap(int a, int b)


{
int tmp = a;
a = b;
b = tmp;
}

"passing by value"

You might also like