לולאות
This presentation is the property of its rightful owner.
Sponsored Links
1 / 30

לולאות PowerPoint PPT Presentation


  • 54 Views
  • Uploaded on
  • Presentation posted in: General

לולאות. מבנה הלולאה. ?. ?. לולאה ( loop ). Used to repeat the same instruction(s) over and over again. C provides some flexible ways of deciding how many times to loop, or when to exit a loop. for, while, do-while loops. While. while (condition) { statement(s); }.

Download Presentation

לולאות

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


6992469

לולאות

Department of Computer Science-BGU


6992469

מבנה הלולאה

?

?

Department of Computer Science-BGU


6992469

לולאה (loop)

  • Used to repeat the same instruction(s) over and over again.

  • C provides some flexible ways of deciding how many times to loop, or when to exit a loop.

  • for, while, do-while loops.

Department of Computer Science-BGU


While

While

while (condition) {

statement(s);

}

The statements are executed as long as condition is true

When the condition is no longer true, the loop is exited.

Department of Computer Science-BGU


Factorial

דוגמא-factorial

#include <stdio.h>

void main() {

int i, n, fact = 1;

printf("Enter a number\n");

scanf("%d", &n);

i=1;

while (i<=n) {

fact = fact*i;

i++;

}

printf("the factorial is %d\n", fact);

}

This is a counter

Every iteration i is incremented by 1. (Equivalent to i=i+1)

Department of Computer Science-BGU


Exercise

Exercise

  • Input –

    • Two integers – A and B

  • Output –

    • How many times A contains B

    • This is the result of the integer division A/B

  • Note –

    • Do not use the division operator!

Department of Computer Science-BGU


Solution

Solution

#include <stdio.h>

void main() {

int a, b, res;

printf("Please enter two numbers.\n");

scanf("%d%d", &a, &b);

res = 0;

while ( (res+1) * b <= a)

res = res + 1;

printf("%d / %d = %d", a, b, res);

}

Department of Computer Science-BGU


Additional exercise

Additional Exercise

  • Input –

    • Two integers – A and B

  • Output –

    • Only if A and B are Digits

    • Otherwise return to input.

Department of Computer Science-BGU


Solution1

Solution

#include <stdio.h>

void main() {

int a, b, flag = 1;

while ( flag){

flag = 0;

printf("Please enter two numbers.\n");

scanf("%d%d", &a, &b);

if(a > 9 || a < 0)

flag = 1;

else if (b > 9 || b < 0 )

flag = 1;

}

// executing statements using a and b

}

Department of Computer Science-BGU


Compact solution

Compact Solution

#include <stdio.h>

void main() {

int a, b, flag = 1;

while ( flag){

flag = 0;

printf("Please enter two numbers.\n");

scanf("%d%d", &a, &b);

if(a > 9 || a < 0 || b > 9 || b < 0 )

flag = 1;

}

// executing statements using a and b

}

Department of Computer Science-BGU


Do while

לולאהdo - while

do {

statement(s)

} while (expression);

  • Similar to while loops

    • Except the condition is evaluated after the loop body

    • The loop body is always executed at least once, even if the expression is never true (equals zero)

Department of Computer Science-BGU


6992469

לקלוט נתון לפי הדרישה

#include <stdio.h>

void main() {

int i;

printf("Please enter a positive number.\n");

do {

scanf("%d", &i);

if (i<=0)

printf("That's not a positive number! Try again.\n");

} while (i<=0);

/* The program continues.... */

}

Department of Computer Science-BGU


6992469

לולאה for - מבנה

/* Program before the for loop */

for( ; ; ) {

loop body;

}

/* Continue the program after for loop */

False

initialize

condition

increment

True

Department of Computer Science-BGU


6992469

דוגמא

For loops are controlled by a counter variable.

for( c =init_value; c<=fin_value ; c+=increment_value)

{

loop body;

}

c is a counter.

c is a incremented after every iteration (can also be decreased!)

Department of Computer Science-BGU


For vs while

for vs . while

  • for is equivalent to while… Any for loop can be converted to while loop and vice versa.

  • If we want to perform something for a predefined number of times, better use for.

  • If we just wait for something to happen (not after a certain number or iterations), better use while.

Department of Computer Science-BGU


Break

break

  • When break is encountered, the loop is exited regardless of whether the condition is still true.

  • The program then continues to run from the first line after the while loop.

  • If called within a nested loop, breakbreaks out of the inner loop only.

Department of Computer Science-BGU


Break1

שימושים ב-break

void main () {

.

.

loop(expression) {

.

.

break;

.

.

}

// continue with the program

}

void main () {

.

loop1(expression1) {

.

loop2(expression2) {

.

break;

.

} // end loop2

// continue with loop1

} // end loop1

.

.

}

Department of Computer Science-BGU


Break2

לקלוט נתון לפי הדרישה עם break

#include <stdio.h>

void main() {

int i;

printf("Please enter a positive number.\n");

do {

scanf("%d", &i);

if (i >= 0) break; // after break no needed else

printf("That's not a positive number! Try again.\n");

} while (1);

/* The program continues.... */

}

Department of Computer Science-BGU


Continue

continue

  • When continue is encountered, the rest of the loop is ignored.

  • The program then continues to run from the beginning of the loop.

  • Rarely used.

  • Can usually be replaced by an appropriate if-else statement.

Department of Computer Science-BGU


Continue1

שימוש ב- continue

void main () {

.

.

loop(expression) {

.

.

continue;

.

.

}

// continue with the program

}

Department of Computer Science-BGU


6992469

תרגיל פשוט

  • כתוב תכנית שמדפיסה את טבלת הכפל

  • פתרון:#include <stdio.h>

    void main(){

    int i,j;printf("Printing the multiplication table: \n\r"); for (i = 1 ; i <= 4 ; i++) {       printf("\n\r");       for (j = 1 ; j <= 5 ; j++)          printf ("(%2d , %2d)", i, j);       }

    }

Department of Computer Science-BGU


6992469

תרגיל

Write a program that accepts

a number from the user,

and checks whether it is prime.

Department of Computer Science-BGU


6992469

פתרון

#include <stdio.h>

void main() {

int i, num;

printf("enter a number\n");

scanf("%d", &num);

for(i = 2 ; i < num; i++)

if (num % i == 0) /* Then we know it's not a prime */

break;

if (i < num)

printf("%d is not a prime number!\n", num);

else

printf("%d is indeed a prime number!\n", num);

}

Department of Computer Science-BGU


6992469

תרגיל נוסף

Extend the former program so

it accepts a number from the user,

and prints out all of the prime numbers

up to that number

(Hint – gotta use nested loops here...)

Department of Computer Science-BGU


6992469

פתרון

#include <stdio.h>

void main() {

int i, j, last;

printf("enter a number\n");

scanf("%d", &last);

for(i = 2; i <= last; i++) {

for(j = 2 ; j < i; j++)

if (i % j == 0)

break;

if (j == i)

printf("the number %d is prime\n", i);

} // end for

}

Department of Computer Science-BGU


6992469

תרגיל נוסף

Write a program that prints an upside-down half triangle of *.

The height of the pyramid is the input.

*****

****

***

**

*

Department of Computer Science-BGU


6992469

הנה הפתרון

#include<stdio.h>

void main() {

int i, j, size;

printf(“Please enter a size:\n”);

scanf(“%d”,&size);

for (i = 1; i <= size; i++) {

for(j = i; j <= size; j++)

printf("*");

printf("\n");

}

}

Department of Computer Science-BGU


6992469

שינוי בתרגיל

Change the former prime-listing program,

so that is displays only

the largest prime number

which is smaller than or equal

to the user’s input.

Department of Computer Science-BGU


6992469

פתרון 1

#include <stdio.h>

void main() {

int i, j, last;

int found = 0; /* This indicates whether we found the largest prime */

printf("enter a number\n");

scanf("%d", &last);

i = last;

while (!found) { /* Loop until we find our guy */

for(j = 2 ; j < i; j++)

if (i % j == 0)

break;

if (j == i) /* If this is true then i is prime */

found = 1;

else

i--;

}

printf("The largest prime not larger than %d is %d.\n", last, i);

}

Department of Computer Science-BGU


2 break

פתרון 2 – עם break

#include <stdio.h>

void main() {

int i, j, last;

printf("enter a number\n");

scanf("%d", &last);

for(i=last ; i>1 ; i--) {

for(j = 2 ; j < i; j++)

if (i % j == 0)

break; // break the inner for loop only !!

if (j == i) // i is prime. We found our guy

break;

}

printf("The largest prime not larger than %d is %d.\n", last, i);

}

Department of Computer Science-BGU


  • Login