3 Instrukcje iteracyjne (prezentacja)

background image

Instrukcje iteracyjne w C#

Opracował dr Robert Fidytek

background image

2

Pętle

Często mamy do czynienia z sytuacją, że
pewną instrukcję lub grupę instrukcji należy
wykonać pewną określoną liczbę razy lub aż
zostanie spełniony pewien warunek.

W takich sytuacjach z pomocą przychodzą nam
pętle, które nazywane są również instrukcjami
iteracyjnymi. Wyróżniamy następujące rodzaje
pętli:

for

while

do - while

foreach

W przypadku pętli istnieje niebezpieczeństwo, że się zapętli. Instrukcje są wykonywane
w nieskończonej pętli z powodu podania złego warunku wyjścia z pętli.

background image

3

Pętla for

Postać pętli:

for

(

instrukcja1

;

warunek

;

instrukcja2

)

Instrukcja3

;

Schemat działania:

Na początku wykonywana jest instrukcja1. Jest ona
wykonywana tylko raz, podczas rozpoczęcia działania
pętli. Następnie jest sprawdzana wartość wyrażenia
logicznego warunek. Gdy warunek ma wartość false
wykonanie pętli zostaje zakończone.Gdy warunek ma
wartość true, to program przechodzi do wykonania
instrukcji instrukcja3, a dopiero potem wykonuje
instrukcję instrukcja2. Po wykonaniu instrukcji
instrukcja2 ponownie przechodzimy do sprawdzenia
wartości wyrażenia logicznego warunek i w zależności
od jego wartości kontynuujemy wykonanie pętli lub nie.

Proszę zauważyć, że instrukcja1 nie jest wykonywana
ponownie.

Uwaga: instrukcja1 najczęściej inicjuje licznik pętli, a
instrukcja2 definiuje sposób zmiany licznika pętli.

background image

4

„Wybrakowana” pętla for ???

for

(

instrukcja1

;

warunek

;

instrukcja2

)

instrukcja3

;

for

(

instrukcja1

;

warunek

;

instrukcja2

)

{

instrukcja3

;

}

for

(

instrukcja1

;

warunek

;

instrukcja2

)

{

instrukcja3_1

;

instrukcja3_2

;

...

instrukcja3_n

;

}

for

(;

warunek

;

instrukcja2

)

Instrukcja3

;

for

(

instrukcja1

;

warunek

;)

instrukcja3

;

for

(;

warunek

;

instrukcja2

) ;

for

(;

warunek

;)

instrukcja3

;

for

(;

warunek

; ) ;

for

(; ;) ;

background image

5

Proste użycie pętli for

int

i;

for

(i = 1; i <= 10; i++)

Console

.Write(

"{0}, "

,i);

int

i;

for

(i = 10; i >= 1; i--)

Console

.Write(

"{0}, "

,i);

int

i;

for

(i = 10; i >= 1; i-=3)

Console

.Write(

"{0}, "

,i);

background image

6

Zagnieżdżanie pętli for

//rysowanie prostokąta

int

a = 3, b = 10, i, j;

for

(i = 1; i <= a; i++)

{

for

(j = 1; j <= b; j++)

Console

.Write(

"*"

);

Console

.WriteLine(

""

);

}

//tabliczka mnożenia

int

i, j;

for

(i = 1; i <= 10; i++)

{

for

(j = 1; j <= 10; j++)

Console

.Write(

"{0,3} "

,i*j);

Console

.WriteLine(

""

);

}

background image

7

Przykład: Obliczanie silni

int

silnia = 1, i, n;

Console

.Write(

"Podaj n = "

);

n=

Convert

.ToInt32(

Console

.ReadLine());

for

(i = 1; i <= n; i++)

silnia *= i;

Console

.WriteLine(

"{0}!={1}"

,n,silnia);

n!=1*2*3*4*...*n

Czy program dobrze
liczy wartość silni dla
ujemnych wartości
liczby n?

Jak to naprawić?

background image

8

Instrukcje oddzielone przecinkami ?!

int

i, j;

for

(i = 1

,

j = 1; i <= 10; i += 2

,

j += 3)

Console

.WriteLine(

"{0,8:c} + {1,8:c} = {2,8:c}"

, i, j, i + j);

for

(

instrukcja1

;

warunek

;

instrukcja2

)

Instrukcja3

;

Instrukcje instrukcja1 i instrukcja2 nie muszą być
pojedynczą instrukcją. Może być ich kilka, wtedy
poszczególne instrukcje oddzielamy przecinkami.

Co oznacza
zapis {0,8:c}?

background image

9

Pętla while

Postać pętli:

while

(

warunek

)

instrukcja

;

lub

while

(

warunek

)

{

instrukcja1

;

...

instrukcjan

;

}

Schemat działania:

Na początku sprawdzana jest wartość logiczna
wyrażenia warunek. Gdy warunek ma wartość false
wykonanie pętli zostaje zakończone.Gdy warunek ma
wartość true, to program przechodzi do wykonania
wykonania instrukcji. Następnie następuje ponowne
sprawdzenie wartości logicznej wyrażenia warunek.

Uwaga: Wykonywane instrukcje powinny wpływać na
wartość logiczną wyrażenia warunek, w przeciwnym
razie pętla się zapęli i nigdy się nie zakończy.

background image

10

Przykład: Wielokrotne wypisywanie

tekstu

int

i = 1, ile = 100;

while

(i <= ile)

{

Console

.WriteLine(

"Nie będę używał komórki na wykładzie."

);

i++;
}

background image

11

Przykład: Rysowanie trójkąta

równoramiennego z gwiazdek


int

i = 1, j = 1, n = 24;

while

(i <= n)

{
j=1;

while

(j <= i)

{

Console

.Write(

"*"

);

j++;
}

Console

.WriteLine(

""

);

i++;
}

background image

12

Przykład: Ciąg Fibonacciego

int

a=0, b=1, c=1, i=0;

Console

.WriteLine(

"F({0,2}) = {1,5}"

,i++,a);

Console

.WriteLine(

"F({0,2}) = {1,5}"

,i++,b);

Console

.WriteLine(

"F({0,2}) = {1,5}"

,i++,c);

while

(c <= 10000)

{
a = b; b = c; c = a + b;

Console

.WriteLine(

"F({0,2}) = {1,5}"

,i,c);

i++;
}

int

a=0, b=1, c=1;

Console

.Write(

"{0}\n{1}\n"

, a, b);

Console

.Write(

"{0}\n"

, c);

while

(c <= 10000)

{
a = b; b = c; c = a + b;

Console

.WriteLine(c);

}

Wzór:

F(0)=0, F(1)=1, F(n) = F(n-1) + F(n-2)

background image

13

Pętla do - while

Postać pętli:

do

{

instrukcje

;

}

while

(

warunek

);

Schemat działania:

Najpierw wykonywane są instrukcje pętli. Po ich
wykonaniu sprawdzane jest wyrażenie logiczne
warunek. Jeżeli ma wartość true, to instrukcje pętli
zostaną wykonane ponownie. Jeżeli wyrażenie
warunek ma wartość false, to wykonanie pętli
zostanie przerwane.

W przypadku pętli do - while mamy pewność, że
instrukcje pętli zawesze zostaną wykonanie co
najmniej raz.

background image

14

Przykład: Literki

string

str;

do

{

Console

.Write(

"Podaj literkę: "

);

str =

Console

.ReadLine();

}

while

(str !=

"k"

);

Console

.WriteLine(

"Koniec pętli do-while"

);

background image

15

Przykład: Średnia ocen

int

ocena, suma=0, ilosc=0;

do

{

Console

.Write(

"Podaj ocene (0 konczy wprowadzanie): "

);

ocena=

Convert

.ToInt32(

Console

.ReadLine());

if

((ocena >= 2) && (ocena <= 5))

{
suma += ocena;
ilosc++;
}
}

while

(ocena != 0);

if

(ilosc > 0)

{

Console

.WriteLine(

"Ilość wprowadzonych ocen: {0}"

,ilosc);

Console

.WriteLine(

"Srednia ocen: {0} "

,(

double

)suma/ilosc);

}

background image

16

Przykład: Odliczanie

using

System;

using System.Threading;

namespace

ConsoleApplication9

{

class

Program

{

static

void

Main(

string

[] args)

{

int

n=10;

while

(n >= 1)

{

Console

.WriteLine(n--);

Thread.Sleep(500);

//opóźnienie 500 ms = 0,5 s

}

Console

.WriteLine(

"\nBUM !!!"

);

Console

.ReadKey(true);

}
}
}

background image

17

Pętla: foreach

Pętla foreach przechodzi dokładnie raz przez
każdy element tablicy.

Pojęcia tablicy i składnia pętli foreach zostaną
omówione na innym wykładzie.

int a=1

;

background image

18

Zadanie 1

Popraw błędy logiczne w poniższym programie obliczającym sumę
ciągu arytmetycznego 1+2+3+4+...+100.

int

i=1, suma=0;

for

(; i >= 100; ++i) ;

suma += i;

Console

.WriteLine(suma);

background image

19

Zadanie 2

Który z poniższych programów wypisze większą liczbę na ekranie?

//program 1

int

wynik=1;

for

(

int

i=1; i <= 5; ++i) wynik *= 2;

Console

.WriteLine(wynik);

//program 2

int

j = 0, licz = 0;

++licz;

while

(j++ < 5) licz = 2 * licz;

Console

.WriteLine(licz);

background image

20

Zadanie 3

Poniższy kod zapisany przy pomocy pętli for zapisz
przy pomocy pętli while.

for

(

int

i = 13; i > 2; i -= 2,

Console

.WriteLine(i)) ;

background image

21

Zadanie 4

Popraw błędy w poniższym kodzie.

int

i;


while

(i = 1)

{

Console

.WriteLine(i++);

}


Document Outline


Wyszukiwarka

Podobne podstrony:
Instrukcja iteracyjna For 1
2 Instrukcje iteracyjne w jezyku C
Instrukcja do prezentacji wyników ankiety, metody badawcze-ćw
C & C++ Wyklady Politechnika Wroclawska 1 rok informatyki, W03 instrukcje iteracyjne, 2 Wyk?ad: J?zy
Instrumentarium CONTROLLINGU prezentacja
INF ćwicz 3 Instrukcje iteracyjne cz 2
Instrukcje iteracyjne
4 Instrukcje warunkowe (prezentacja)
C++ Skrypty, w03 - Instrukcje iteracyjne, Freeware
1 Instrukcje iteracyjne (materi Nieznany (2)
Instrukcja iteracyjna For 1
Instrumentarium CONTROLLINGU prezentacja

więcej podobnych podstron