background image

Programowanie komputerów

Prowadzący:

dr hab. inŜ. Kazimierz Worwa, prof. UW MSC

r.a. 2007/2008

UCZELNIA WARSZAWSKA

Kierunek INFORMATYKA I EKONOMETRIA

background image

2

Programowanie komputerów

Lokalizacja plików do wykładów

http://members.lycos.co.uk/pkjw84/kw/

logowanie:

nazwa u

Ŝ

ytkownika  

2007/2008

hasło  

kw

background image

Programowanie komputerów

Wykład 3       

Instrukcje warunkowe

Instrukcje iteracyjne 

background image

4

Programowanie komputerów

Operatory relacyjne

Umo

Ŝ

liwiaj

ą

 one wykonywanie ró

Ŝ

nych porówna

ń

 w zdaniach 

logicznych

Lista operatorów relacyjnych:

>

wi

ę

ksze ni

Ŝ

,

>= wi

ę

ksze lub równe ni

Ŝ

,

<

mniejsze ni

Ŝ

,

<= mniejsze lub równe ni

Ŝ

,

== równe

!= 

Ŝ

ne

UWAGA: Nale

Ŝ

y zwróci

ć

 uwag

ę

 na istotn

ą

 ró

Ŝ

nic

ę

 pomi

ę

dzy 

operatorem przypisania =, a operatorem relacyjnym 
porównania ==.

background image

5

Programowanie komputerów

Priorytety operatorów porównania i relacyjnych

Najwy

Ŝ

szy priorytet

!

>, >=, <, <=

==, !=

&&

Najni

Ŝ

szy priorytet

||

W zapisie zda

ń

 logicznych wykorzystujemy ponadto nawiasy 

okr

ą

głe.

background image

6

Programowanie komputerów

Operatory przyrostowe

Umo

Ŝ

liwiaj

ą

 zapis operacji inkrementacji (zwi

ę

kszenia 

warto

ś

ci liczby całkowitej o jeden) lub dekrementacji

(zmniejszenia warto

ś

ci liczby całkowitej o jeden)

Inkrementacja:

a = a + 1;   zapisujemy operatorem:   

a++

Dekrementacja:

a = a – 1;   zapisujemy operatorem:    

a--

operatory
przyrostowe

background image

7

Programowanie komputerów

Operatory przyrostowe

Przykład

#include <stdio.h>

int main(void) {

int i, j;

i = 10;

j = i++;    

// Najpierw przypisanie, potem inkrementacja

/* wy

ś

wietlenie warto

ś

ci zmiennych i oraz j */

printf("i = %d",i);

printf(", j= %d", j);

getchar(); 

//Zatrzymanie okna konsoli

return 0;

}

Program 3.1

background image

8

Programowanie komputerów

Operatory przyrostowe

Przykład

#include <stdio.h>

int main(void) {

int i, j;

i = 10;

j = ++i; 

// Najpierw inkrementacja, potem pryzpisanie

/* Wy

ś

wietlenie warto

ś

ci zmiennych i oraz j */

printf("i = %d",i);

printf(", j= %d", j);

getchar(); 

//Zatrzymanie okna konsoli

return 0;

}

Program 3.2

background image

9

Programowanie komputerów

Operacje WE: podstawy wykorzystania funkcji printf( )

printf( ) pochodzi z biblioteki <stdio.h>

umo

Ŝ

liwia wypisywanie tekstu zapisywanego w cudzysłowie:

printf(„To jest tekst”);

printf(„Tekst zako

ń

czony znakiem ko

ń

ca wiersza\n”);

printf(„\nTekst poprzedzony znakiem ko

ń

ca wiersza.”);

printf(\n);  /*przej

ś

cie do nast

ę

pnego wiersza*/

printf(„Tekst pierwszy”, „ Tekst drugi”, „ Tekst trzeci”);

umo

Ŝ

liwia wypisywanie zmiennych i stałych razem z 

dodatkowym tekstem lub oddzielnie 

aby wypisywa

ć

 stałe i zmienne nale

Ŝ

y w funkcji printf() 

wykorzystywa

ć

 tzw. specyfikatory konwersji

background image

10

Programowanie komputerów

Specyfikatory konwersji dla printf( )

specyfikatory konwersji wskazuj

ą

 w tek

ś

cie miejsce 

wyst

ę

powania zmiennej okre

ś

lonego typu 

na tej podstawie warto

ść

 tej zmiennej zostanie odpowiednio 

przekonwertowana do tekstu, a tekst ten wysłany na konsol

ę

 

wyj

ś

cia 

lista podstawowych specyfikatorów konwersji: 

%lu

unsigned long

%u

unsigned int, unsigned short

%f

float, double

%ld

long

%d

int, short

%c

char

background image

11

Programowanie komputerów

Specyfikatory konwersji wykorzystane w printf( )

#include <stdio.h>
int wiek = 20;
int odleglosc = 123;
int temperatura = -8;
int czas = 2;
int main ( )
{

printf("Nazywam sie Adam. Mam %d lat.", wiek);
printf("\nMieszkam %d kilometry od Warszawy i jade na uczelnie %d 

godziny.", odleglosc, czas);

printf("\nOstatnio było %d stopni Celcjusza. Brr, zimno!!!", temperatura);
printf("\n");
printf("Wynik dzielenia 5/2 wynosi:\t%d.", 5/2);
getchar();
return 0;

}

Program 3.3

background image

12

Programowanie komputerów

Znaki sterujące w printf( )

\n – przej

ś

cie do nast

ę

pnego wiersza

\t – wstawienie znaku tabulatora

\b – wymazanie znaku (backspace)

\\ - wstawienie znaku \

\? – wstawienie znaku zapytania

\’ – wstawienie apostrofu

\” – wstawia znak cudzysłowia

wi

ę

cej na ten temat w czasie zaj

ęć

 laboratoryjnych

background image

13

Programowanie komputerów

Operacje WY: podstawy wykorzystania funkcji scanf( )

scanf( ) pochodzi z biblioteki <stdio.h>

umo

Ŝ

liwia wczytywanie warto

ś

ci do zmiennych

format warto

ś

ci jest okre

ś

lony przez tzw. specyfikatory 

formatów

liczba argumentów musi odpowiada

ć

 liczbie specyfikatorów

Przykład

int pierwszy, drugi;

scanf(„%d %d”, &pierwszy, &drugi);

background image

14

Programowanie komputerów

Specyfikatory formatów dla scanf( )

lista podstawowych specyfikatorów konwersji: 

%p

wska

ź

nik

%u

liczba całkowita bez znaku

%s

napis

%e lub %f

liczba zmiennoprzecinkowa

%d lub %i

liczba całkowita w postaci dziesi

ę

tnej

%c

pojedynczy znak

background image

15

Programowanie komputerów

Uzycie printf() i scanf() - przykłady

#include <stdio.h>
unsigned int wiek, odleglosc;
int temperatura;
float czas;
main ( ) {

printf("Podaj wiek: ");
scanf("%u", &wiek);

printf("\nPodaj odleglosc: ");
scanf("%u", &odleglosc);

printf("\nPodaj temperature: ");
scanf("%d", &temperatura);

printf("\nPodaj czas: ");
scanf("%f", &czas);
getchar();
return 0;

}

Program 3.4

background image

16

Programowanie komputerów

Instrukcje języka C

Wszystkie  instrukcje  w  j

ę

zyku  C  z  wyj

ą

tkiem  instrukcji  z

ł

o

ż

onej 

ko

ń

cz

ą

si

ę ś

rednikiem. 

Instrukcja z

łłłł

o

żżżż

ona 

Instrukcja 

z

ł

o

ż

ona 

sk

ł

ada 

si

ę

nawiasu 

klamrowego 

otwieraj

ą

cego,  dowolnych  instrukcji  (mog

ą

by

ć

równie

ż

kolejne 

instrukcje z

ł

o

ż

one) i nawiasu klamrowego zamykaj

ą

cego:

instrukcja1; 
instrukcja 2;
instrukcja 3;

instrukcja 4; 
instrukcja 5; 

}

background image

17

Programowanie komputerów

Instrukcja podstawienia

Instrukcja  ta  zawiera  dowolne  wyra

Ŝ

enie  j

ę

zyka  C.  Operatory 

słu

Ŝą

ce do konstrukcji wyra

Ŝ

e

ń

zostan

ą

opisane ni

Ŝ

ej. 

Przykłady: 

a=2; /* inicjowanie zmiennej */ 

a = b = c+4;

znak=‘a’;

background image

18

Programowanie komputerów

Instrukcja warunkowa

Instrukcja  warunkowa  umo

Ŝ

liwia  wykonanie  pewnej  instrukcji  w 

zale

Ŝ

no

ś

ci od warto

ś

ci wyra

Ŝ

enia. 

Wszystkie  warto

ś

ci  ró

Ŝ

ne  od  0  s

ą

w  j

ę

zyku  C  traktowane  jako 

prawda, równe 0 jako fałsz. 

Wyra

Ŝ

enia logiczne s

ą

liczone tylko do momentu, w którym mo

Ŝ

na 

okre

ś

li

ć

jego warto

ść

.

Składnia:

if (wyra

Ŝ

enie) instrukcja1;

lub

if (wyra

Ŝ

enie) instrukcja1; 

else  instrukcja 3;

background image

19

Programowanie komputerów

Instrukcja warunkowa

W  obu  postaciach  instrukcja  mo

Ŝ

e  by

ć

  instrukcj

ą

  zło

Ŝ

on

ą

.  W  pierwszym  przypadku 

instrukcja wykonuje si

ę

, je

ś

li warto

ść

 wyra

Ŝ

enia jest ró

Ŝ

na od 0. W drugim wykonuje 

si

ę

 jedna z dwóch podanych instrukcji (nigdy obie) - pierwsza, gdy warto

ść

 wyra

Ŝ

enia 

jest ró

Ŝ

na od 0, druga - gdy warto

ść

 wyra

Ŝ

enia jest równa 0.  

 

 

 

 

background image

20

Programowanie komputerów

Instrukcja warunkowa - przykład

if (a > 5)

printf("a jest wi

ę

ksze od 5\n");

else

printf("a jest mniejsze lub równe 5\n");

background image

21

Programowanie komputerów

Instrukcja switch

Instrukcja switch słu

Ŝ

y do wybierania jednego przypadku 

z wielu. 

Składnia:

switch (zmienna){

case stała1:

Instrukcja1;
Break;

case stała2:

Instrukcja2;
Break;

…………
default:

InstrukcjaD;
Break;

}

background image

22

Programowanie komputerów

Instrukcja switch – przykład 1

#include <stdio.h>
int main(void) {

int i;
printf(„Wprowadz liczb
ę od 1 do 4: ”);
scanf(„%d, &i);
switch(i) {

case 1: printf(„jeden”);

break;

case 2: printf(„dwa”);

break;

case 3: printf(„trzy);

break;

case 4: printf(„cztery”);

break;

default: printf(„Liczba nierozpoznana”);

}
return 0;

}

background image

23

Programowanie komputerów

Instrukcja switch – przykład 2

#include <stdio.h>
int main(void) {

char ch;
printf(„\nWprowad
ź literę: ”);  ch = getche(); printf(\n”);
switch(ch) {

case ‘a’: 
case ‘
ą’:
case ‘e’: 
case ‘
ę’: 
case ‘i’:
case ‘o’:
case ‘ó’:
case ‘u’:
case ‘y’: 

printf(„ jest samogłoską\n”);
break;

default:

printf(„ jest spółgłoską\n”);

}

return 0;

}

background image

24

Programowanie komputerów

Instrukcja switch – przykład 3

#include <stdio.h>
int main(void) {

char ch;
do {
printf(„Wprowad
ź literę, q kończy: ”);

ch = getchar();
printf(\n”);
switch(ch) {

case ‘a’: printf(„Nadszedł ”);
case ‘b’: printf(„czas ”);
case ‘c’: printf(„ludzi honoru”);
break;
case ‘d’: printf(„Idzie ”);
case ‘e’: printf(„
Ŝołnierz”); 

}

}while(ch != ‘q’);

return 0;

}

background image

25

Programowanie komputerów

Pętla while

Składnia: 

while (wyra

Ŝ

enie) instrukcja;

Instrukcja  umieszczona  w  p

ę

tli  „while"  (mo

Ŝ

e  to  by

ć

instrukcja 

zło

Ŝ

ona)  jest  powtarzana  a

Ŝ

do  momentu,  gdy  warto

ść

wyra

Ŝ

enia 

b

ę

dzie równa 0. 

W  przypadku,  gdy  warto

ść

wyra

Ŝ

enia  od  razu  b

ę

dzie  równa  0, 

instrukcja nie wykona si

ę

ani raz. 

Je

ś

li  wyra

Ŝ

enie  nie  przyjmie  warto

ś

ci  0,  instrukcja  b

ę

dzie  si

ę

wykonywa

ć

niesko

ń

czon

ą

liczb

ę

razy. 

Przykład

char znak;

znak=

znak=

znak=

znak=getchar

getchar

getchar

getchar();

();

();

();

while (znak!=‘#’) {

printf

printf

printf

printf(„

(„(„

(„\\\\n Niepoprawny znak”);

n Niepoprawny znak”);

n Niepoprawny znak”);

n Niepoprawny znak”);

znak=

znak=

znak=

znak=getchar

getchar

getchar

getchar();

();

();

();

}}}}

 

background image

26

Programowanie komputerów

Pętla do

Składnia;

do

instrukcja;

while (wyra

Ŝ

enie);

P

ę

tla  „do"  jest  podobna  do  p

ę

tli  „while",  z  t

ą

Ŝ

nic

ą

Ŝ

e  warunek 

kontynuacji jest sprawdzany po wykonaniu instrukcji. 

Oznacza to, 

Ŝ

e instrukcja wykona si

ę

przynajmniej jeden raz. 

background image

27

Programowanie komputerów

Pętla do

 

 

Przykład:

do 

printf(„Zako

ń

czy

ć

program?\n"); 

while (getchar() != ‘T'); 

}

background image

28

Programowanie komputerów

Pętla for

 

 

 

Składnia: 

for (wyra

Ŝ

enie1; wyra

Ŝ

enie2; wyra

Ŝ

enie3) instrukcja;

Przykład:

{
int i;
char txt[10];

for (i = 0; i < 10; i ++)

txt[i] = 'A'; 

background image

29

Programowanie komputerów

Pętla for

Składnia: 

for (wyra

Ŝ

enie1; wyra

Ŝ

enie2; wyra

Ŝ

enie3) instrukcja;

Wszystkie wyra

Ŝ

enia s

ą

opcjonalne. 

Wyra

Ŝ

enie1 jest obliczane przed wej

ś

ciem do p

ę

tli (tylko raz!). 

Nast

ę

pnie oblicza si

ę

wyra

Ŝ

enie2 i sprawdza czy jest ono ró

Ŝ

ne od 0. Je

ś

li 

tak, wykonywana jest instrukcja i obliczane jest wyra

Ŝ

enie3.

Nast

ę

pnie  sprawdzana  jest  warto

ść

wyra

Ŝ

enia2.  P

ę

tla  jest  wykonywana 

a

Ŝ

do momentu, gdy warto

ść

wyra

Ŝ

enia2 b

ę

dzie równa 0. 

Wyra

Ŝ

enie3 jest zawsze obliczane po wykonaniu instrukcji. 

Je

ś

li wszystkie trzy wyra

Ŝ

enia w p

ę

tli for s

ą

puste (p

ę

tla postaci: 

for(;;) instrukcja;

to jest to bezwarunkowa p

ę

tla niesko

ń

czona. 

Instrukcja  w  p

ę

tli  for mo

Ŝ

e  nie  wykona

ć

si

ę

ani  raz,  je

ś

li  wyra

Ŝ

enie2

b

ę

dzie od razu równe 0. 

P

ę

tla  for mo

Ŝ

e  by

ć

p

ę

tl

ą

niesko

ń

czon

ą

,  je

ś

li  wyra

Ŝ

enie2 nigdy  nie 

przyjmie warto

ś

ci 0. 

Wyra

Ŝ

enie1 b

ę

dzie zawsze obliczone (dokładnie jeden raz). 

P

ę

tla  for umo

Ŝ

liwia  zgrupowanie  instrukcji  inicjuj

ą

cej  p

ę

tl

ę

,  warunku 

kontynuacji  i  instrukcji  po  wykonaniu  p

ę

tli  w  jednym  miejscu  w 

programie.

background image

30

Programowanie komputerów

Instrukcja Return

Powoduje wyj

ś

cie z aktualnie wykonywanej funkcji. 

Instrukcja  return mo

Ŝ

e  wyst

ą

pi

ć

w  dowolnym  miejscu  w  ciele 

funkcji. 

Instrukcja return mo

Ŝ

e by

ć

u

Ŝ

yta z podaniem wyra

Ŝ

enia lub bez. 

Je

ś

li wyra

Ŝ

enie zostanie podane, to jego warto

ść

zostanie obliczona 

przed wyj

ś

ciem z funkcji i zwrócona na zewn

ą

trz.

Składnia: 

return;

lub

return wyra

Ŝ

enie;

background image

31

Programowanie komputerów

Instrukcja Return - przykład

long silnia(int n) 
{

long wynik;
int i;

if (n <= 0) return 1; 
wynik = 1; 
for (i = 1; i <= n; i ++) 

wynik = wynik * i;

return wynik; 

background image

32

Programowanie komputerów

Instrukcja skoku

Składnia: 

goto etykieta;

Instrukcja 

skoku 

powoduje 

bezwarunkowe 

przekazanie 

sterowania do instrukcji poprzedzonej etykiet

ą

Etykiet

ę

definiuje  si

ę

w  dowolnym  miejscu  wewn

ą

trz  funkcji, z 

której została wykonana instrukcja skoku.

Składnia: 

etykieta:

Etykiet nie trzeba deklarowa

ć

.

background image

33

Programowanie komputerów

Instrukcja skoku - przykład

int f() 

int l; 
scanf("%d", &l"); 
if (l < 0) goto err; 
printf("%d! = %d\n", l, silnia(l));
return 1;

err:
printf("Nie mo

Ŝ

na obliczy

ć

silni liczby mniejszej od 0\n");

return 0; 

}

background image

34

Programowanie komputerów