POLITECHNIKA ‘LSKA

w Gliwicach

WYDZIAŠ IN›YNIERII BIOMEDYCZNEJ

LABORATORIUM

J†ZYKÓW PROGRAMOWANIA

Instrukcje sterujace w C ]

Opracowaª: dr in». Piotr Zarychta

1 Cel ¢wiczenia.

2

1 Cel ¢wiczenia.

Celem ¢wiczenia jest przybli»enie podstawowych instrukcji umo»liwiaj¡cych budow¦ p¦tli, a tak»e pokazanie ich praktycznego wykorzystania w programie.

2 Instrukcje steruj¡ce

2.1 Instrukcja warunkowa if...else

Instrukcje warunkowe s¡ wykorzystywane w momencie, gdy chcemy wykona¢ pewn¡ cz¦±¢ programu ale tylko wówczas, gdy speªniony jest okre±lony warunek. W C ] instrukcja warunkowa przyjmuje nast¦puj¡c¡ posta¢ [1, 2]: if (warunek)

instrukcja 1

Po sªowie kluczowym if podaje si¦ uj¦ty w nawiasy okr¡gªe warunek, który musi zosta¢ speªniony, aby wykonana zostaªa instrukcja 1. Je±li chcemy, aby po speªnieniu warunku wykonanych zostaªo wi¦cej instrukcji, a nie tylko jedna, wówczas musimy uj¡¢ caªy blok instrukcji w nawiasy klamrowe [1, 2].

if (warunek)

{

instrukcja 1;

instrukcja 2;

instrukcjaN ;

}

Mo»liwy jest tak»e przypadek, w którym wykonanie pewnej instrukcji lub bloku instrukcji uzale»niamy od nie speªnienia warunku. Nale»y wówczas wykorzysta¢ sªowo kluczowe else. Zatem ogólna posta¢ instrukcji steruj¡cej wygl¡da nast¦puj¡co [1, 2]:

if (warunek)

{

instrukcja 1;

instrukcja 2;

instrukcjaN ;

}

else

{

instrukcja 1;

instrukcja 2;

instrukcjaM ;

}

Nale»y pami¦ta¢, »e do sprawdzania warunku, a wi¦c porównywania argumentów sªu»¡ operatory relacji (po-równania). Wynikiem ich dziaªania mo»e by¢ prawda czyli warto±¢ logiczna true lub faªsz czyli warto±¢ logiczna false. Zbiór dost¦pnych operatorów relacji podano poni»ej [1, 2]:

• a==b - prawda (true) gdy argumenty a i b s¡ równe;

• a!=b - prawda (true) gdy argumenty a i b s¡ ró»ne;

2.2 P¦tla for

3

• a>b

- prawda (true) gdy argument a jest wi¦kszy od b;

• a>=b - prawda (true) gdy argument a jest wi¦kszy lub równy b;

• a<b

- prawda (true) gdy argument a jest mniejszy od b;

• a<=b - prawda (true) gdy argument a jest mniejszy lub równy b; Rozwa»my teraz przykªad, w którym sprawdzamy jak¡ liczb¦ (dodatni¡, ujemn¡ lub zero) podaª u»ytkownik.

using System;

class Program {

static void Main() {

Console.WriteLine("Podaj liczb¦:");

string ciagLiczba=Console.ReadLine();

double liczba=Double.Parse(ciagLiczba);

if (liczba>0) Console.WriteLine("Podano liczb¦ dodatni¡!"); if (liczba==0) Console.WriteLine("Podano liczb¦ zero!");

if (liczba<0) Console.WriteLine("Podano liczb¦ ujemn¡");

}

}

Prosz¦ sprawdzi¢, czy poprawna jest podana ni»ej konstrukcja tego samego programu (wykorzystuj¡ca za-gnie»d»anie instrukcji if...else).

using System;

class Program {

static void Main() {

Console.WriteLine("Podaj liczb¦:");

string ciagLiczba=Console.ReadLine();

double liczba=Double.Parse(ciagLiczba);

if (liczba>0) Console.WriteLine("Podano liczb¦ dodatni¡!"); else if (liczba==0) Console.WriteLine("Podano liczb¦ zero!"); else Console.WriteLine("Podano liczb¦ ujemn¡");

}

}

2.2 P¦tla for

P¦tle to bardzo wa»ne narz¦dzie w r¦kach programisty, które pozwala na realizacj¦ powtarzaj¡cych si¦ czynno±ci.

Ogóln¡ posta¢ p¦tli for podano poni»ej [1, 2]:

for (wyra»enie pocz¡tkowe ; wyra»enie warunkowe ; wyra»enie modykuj¡ce) instrukcja 1; Wyst¦puj¡ce w p¦tli for wyra»enie pocz¡tkowe np. i=1 stosuje si¦ w celu nadania zmiennej steruj¡cej p¦tl¡

pocz¡tkowej warto±ci (inicjalizacja zmiennej steruj¡cej). Warto±¢ ta mo»e by¢ nast¦pnie zmieniana za pomoc¡

wyra»enia modykuj¡cego np. i++. Zmiana ta jest wykonywana, a» do momentu speªnienia warunku poda-nego w wyra»eniu warunkowym np. i<10. Nale»y pami¦ta¢, »e wyra»enie warunkowe jest obliczane przed ka»dym wykonaniem tre±ci p¦tli, a tre±¢ p¦tli jest wykonywana tylko w przypadku speªnienia warunku po-danego w wyra»eniu warunkowym. Nast¦pnie, po wykonaniu kolejnych instrukcji tre±ci p¦tli realizowane jest wyra»enie modykuj¡ce.

2.3 P¦tla while

4

W przypadku, gdy tre±¢ p¦tli zawiera wi¦cej ni» jedn¡ instrukcj¦, nale»y uj¡¢ caª¡ tre±¢ p¦tli w nawiasy klamrowe.

for (wyra»enie pocz¡tkowe ; wyra»enie warunkowe ; wyra»enie modykuj¡ce)

{

instrukcja 1;

instrukcja 2;

instrukcjaM ;

}

Rozwa»my przykªad, w którym program wypisze kolejne liczby od 1..10 pionowo (jedna pod drug¡) i poziomo (jedna obok drugiej).

using System;

class Program {

static void Main() {

int i,j=10;

for (i=1 ; i<=j ; i++) Console.WriteLine(i);

for (i=1 ; i<=j ; i++) Console.Write(i+ );

}

}

2.3 P¦tla while

P¦tli while mo»na tak»e u»y¢ do realizacji powtarzaj¡cych si¦ czynno±ci. Ró»nica w porównaniu z p¦tl¡ for polega jednak na tym, »e liczba powtórze« nie jest bli»ej znana. Ogólna posta¢ p¦tli while jest nast¦puj¡ca [1, 2]: while (wyra»enie warunkowe) instrukcja 1;

W przypadku p¦tli while instrukcja (b¡d¹ blok instrukcji uj¦ty w nawiasy klamrowe) jest powtarzana tak dªugo, jak dªugo speªnione jest wyra»enie warunkowe, które jest sprawdzane zawsze przed wykonaniem tre±ci p¦tli. Mo»liwa jest zatem sytuacja, »e tre±¢ p¦tli nie zostanie wykonana ani razu.

Rozwa»my raz jeszcze przykªad, w którym program wypisze kolejne liczby od 1..10 pionowo (jedna pod drug¡) i poziomo (jedna obok drugiej). Tym razem do realizacji tak okre±lonego zadania wykorzystamy p¦tl¦ while.

using System;

class Program {

static void Main() {

int i=1,j=10;

while (i<=j) {

Console.WriteLine(i);

i++;

}

i=1;

while (i<=j) {

Console.Write(i+ );

i++;

}

}

}

2.4 P¦tla do..while

5

Prosz¦ zwróci¢ uwag¦, »e w powy»szym programie przed u»yciem p¦tli while musimy przypisa¢ zmiennej i pocz¡tkow¡ warto±¢ (tu jest to i=1).

2.4 P¦tla do..while

P¦tla ta jest swego rodzaju modykacj¡ p¦tli while. Posta¢ ogólna p¦tli do..while przedstawia si¦ nast¦pu-j¡co [1, 2]:

do {

instrukcja 1;

instrukcja 2;

instrukcjaN ;

}

while(wyra»enie warunkowe);

Ró»nica w porównaniu z p¦tl¡ while jest taka, »e tutaj tre±¢ p¦tli wykona si¦ przynajmniej raz. Niezale»-

nie od tego, czy wyra»enie warunkowe jest speªnione. Natomiast tre±¢ p¦tli wyst¦puj¡ca po sªowie kluczowym do b¦dzie powtarzana tak dªugo, jak dªugo b¦dzie speªnione wyra»enie warunkowe. Nale»y zwróci¢ tak»e uwag¦

na konieczno±¢ u»ycia ±rednika po sªowie kluczowym while(wyra»enie warunkowe)!

Rozwa»my raz jeszcze przykªad, w którym program wypisze kolejne liczby od 1..10 pionowo (jedna pod drug¡) i poziomo (jedna obok drugiej). Tym razem do realizacji tak okre±lonego zadania wykorzystamy p¦tl¦ do..while.

using System;

class Program {

static void Main() {

int i=1,j=10;

do {

Console.WriteLine(i);

i++;

}

while (i<=j);

i=1;

do {

Console.Write(i+ );

i++;

}

while (i<=j);

}

}

2.5 P¦tla foreach

P¦tla foreach zostanie szerzej omówiona w ¢wiczeniu po±wi¦conemu operacjom na tablicach.

3 Zadania do samodzielnego wykonania przed ¢wiczeniem

1. Napisa¢ program, który wy±wietli liczby caªkowite z przedziaªu 0..50 z krokiem równym 5 (czyli 0, 5,..., 45, 50) i uczyni to poziomo oraz pionowo.

4 Program ¢wiczenia

6

2. Napisa¢ program pobieraj¡cy od u»ytkownika dwie liczby caªkowite L1 i L2, a nast¦pnie wypisuj¡cy wszystkie liczby caªkowite z zakresu L1..L2. Uwaga! Liczby L1 i L2 nie musz¡ speªnia¢ zale»no±ci L1<L2.

Je±li L1>L2 nale»y wy±wietli¢ liczby z przedziaªu L2..L1.

3. Napisa¢ program wymuszaj¡cy na u»ytkowniku podanie wªa±ciwej warto±ci liczbowej b¡d¹ okre±lonego znaku. Na przykªad program prosi u»ytkownika o podanie liczby z przedziaªu 0..2. Podanie przez u»ytkownika warto±ci liczbowej nie nale»¡cej do w/w przedziaªu powinno skutkowa¢ ponowieniem pro±by.

4 Program ¢wiczenia

Sugeruje si¦ realizacj¦ przykªadów z pkt.3, wzgl¦dnie zada« utrwalaj¡cych skªadni¦ prezentowanych w ¢wiczeniu instrukcji steruj¡cych.

Literatura

[1] Lis M., C ]. Praktyczny kurs, Helion, Gliwice 2007,

[2] Hejlsberg A., Wiltamuth S., Golde P., Microsoft C ] Language Specication, Addison-Wesley, 2004,