Paradygmaty programowania wyk 5

background image

Paradygmaty

Paradygmaty

programowania

programowania

Wykład 5 – Przepływ sterowania,

procedury i funkcje

procedury i funkcje

background image

Przepływ sterowania

Przepływ sterowania

C

E

F

E

T

F

Komendy o pojedynczym wejściu i wyjściu

C

C

1

C

2

C

1

E

T

F

C

1

C

2

E

T

F

background image

Przepływ sterowania

Przepływ sterowania –

– sekwensery

sekwensery

Sekwenser

– konstrukcja, która pozwala na przeniesienie

kontroli w inne miejsce programu, nazywane

celem

sekwensera

.

Sekwensery

nisko-poziomowe

Skoki

wysoko-poziomowe

Komendy ucieczki
Wyjątki

background image

Przepływ sterowania

Przepływ sterowania –

– skoki

skoki

Skok

sekwenser,

który

pozwala

na

przeniesienie

kontroli

w

określone

miejsce

programu.

Najczęściej

przyjmuje postać komendy goto L;, gdzie L jest etykietą
oznaczającą miejsce docelowe.

int main()

C

int main()
{

C

1

;

if(E

1

) goto A;

if(E

2

) goto B;

C

2

;

A:

C

3

;

B:

C

4

;

C

5

;

}

C

1

1

E

1

2

E

2

C

2

C

3

C

4

background image

Komenda ucieczki

– sekwenser, który przerywa wykonanie

komendy blokowej lub procedury. Pozwala na przepływ
sterowania typu: jedno-wejście wiele-wyjść

Przepływ sterowania

Przepływ sterowania –

– komenda ucieczki

komenda ucieczki

int sumuj(int tab[])

C

1

int sumuj(int tab[])
{

int suma = 0;
for(int i=0; i<10; i++)
{

suma += tab[i];
if(suma > 10)

break;

}
return suma;

}

C

2

1

E

1

T

F

C

1

2

E

2

T

F

background image

Przepływ sterowania

Przepływ sterowania –

– wyjątki

wyjątki

Sytuacja nietypowa (wyjątkowa)

– jest to sytuacja, w której

program nie może działać normalnie.

Wyjątki

– są techniką pozwalającą na obsługę sytuacji

wyjątkowych.

Wyjątek

– jednostka reprezentująca sytuację wyjątkową lub

rodzinę takich sytuacji.

background image

Przepływ sterowania

Przepływ sterowania –

– wyjątki

wyjątki

Wyjątki

Rzucanie wyjątku

Przechwytywanie

wyjątku

Rzucanie wyjątku:

Rzucanie wyjątku:

if(E) throw new Ex;

Przechwytywanie wyjątku:

try

C

a

; C

b

;

catch(T

1

I

1

) C

1

;


catch(T

n

I

n

) C

n

;

finally C

f

background image

double funkcja(double a, double b) {

if (b == 0)

throw new DivideByZeroException("Nie dzieli się przez zero");

else

return a / b;

}

static void Main(string[] args){

double wartosc=0;

Przepływ sterowania

Przepływ sterowania –

– wyjątki (przykład C#)

wyjątki (przykład C#)

double wartosc=0;
try

{

wartosc = Funkcja(3, 0);

}
catch (DivideByZeroException e) {

Console.WriteLine(e.Message);
wartosc = 0;

}
finally {

wartosc = 1;

}

}

background image

Abstrakcja w programowaniu

Abstrakcja w programowaniu

W języku programowania abstrakcja pozwala na rozróżnienie

co

jednostka programu robi i

jak

jednostka programu pracuje.

Procedura

– jednostka obejmująca instrukcje programu.

Procedury

Procedury

właściwe

Procedury

funkcyjne (funkcje)

Procedura

– jednostka obejmująca instrukcje programu.

background image

Procedury właściwe

Procedury właściwe

Procedura właściwa

obejmuje komendy do wykonania

i podczas działania modyfikuje wartości zmiennych.

C++:

Pascal:

C++:

void I(P

1

,…,P

N

)

{

B

}

Pascal:

procedure I(P

1

,…,P

N

)

var

D

begin

B

end;

background image

Procedury funkcyjne

Procedury funkcyjne

Procedura funkcyjne (funkcje)

obejmują wyrażenia, których

wartość powinna zostać obliczona. Kiedy funkcja jest
wywoływana zwraca wyznaczoną wartość zawartego w niej
wyrażenia.

C++:

Pascal:

C++:

T I(P

1

,…,P

N

)

{

B

}

Pascal:

function I(P

1

,…,P

N

) : T

var

D

begin

B

end;

background image

Parametry i argumenty funkcji

Parametry i argumenty funkcji

Argument

jest wartością lub jednostką przekazywaną do

procedury.

Parametr aktualny

jest wyrażeniem, które zwraca nam

Parametr aktualny

jest wyrażeniem, które zwraca nam

argument.

Parametr formalny

jest identyfikatorem, za pomocą którego

może mieć dostęp do argumentu.

background image

Parametry i argumenty funkcji

Parametry i argumenty funkcji

int suma ( int a, int b )
{

return a + b;

}

int main()

parametry formalne

{

int a = 3;
int b = 4;
cout<<suma( a, b );
return 0;

}

parametry aktualne

background image

Mechanizm przekazywania parametrów

Mechanizm przekazywania parametrów

Machanizm przekazywania parametrów

- forma skojarzenia

wartości atrybutu z odpowiednim parametrem formalnym.

mechanizm

przekazywania atrybutów

przekazywania atrybutów

przekazywanie przez

wartość

przekazywanie przez

referencję

background image

Przekazywanie parametrów przez wartość

Przekazywanie parametrów przez wartość

Przekazywanie parametrów przez wartość

- pozwala aby

wartość była kopiowana do i/lub z procedury.

Przekazywanie parametrów

przez wartość

przez wartość

Przekazywanie

do funkcji

Przekazywanie

z funkcji

Przekazywanie

do i z funkcji

background image

Przekazywanie parametrów przez wartość do funkcji

Przekazywanie parametrów przez wartość do funkcji

Podczas wywoływania funkcji tworzona jest zmienna lokalna

i inicjalizowana wartością odpowiadającego jej argumentu.

Wszelkie modyfikacje tej zmiennej lokalnej

nie są widoczne

poza funkcją.

ADA:

C++:

ADA:

procedure Dodaj(a, b: in Integer)
is

suma : Integer := 0;

begin

a := a + 5;
suma := a + b;

end;

x := 5;
Dodaj(x, 5);

C++:

void Dodaj(int a, int b)
{

int suma = 0;
a += 5;
suma = a + b;

}

x = 5;
Dodaj(x, 5);

background image

Przekazywanie parametrów przez wartość z funkcji

Przekazywanie parametrów przez wartość z funkcji

Podczas wywoływania funkcji tworzona jest zmienna lokalna

ale

nie inicjalizowana

.

Kiedy następuje powrót z procedury

wartość tej zmiennej jest przypisana do argumentu

.

ADA:

ADA:

procedure Dodaj(a, b: in Integer, suma : out Integer) is
begin

a := a + 5;
suma := a + b;

end;

x: Integer;

Dodaj(3, 4, x);

background image

Przekazywanie parametrów przez wartość do i z funkcji

Przekazywanie parametrów przez wartość do i z funkcji

Jest to połączenie dwóch poprzednich metod.

Podczas wywoływania funkcji tworzona jest zmienna lokalna

i

inicjalizowana

wartością odpowiadającego jej argumentu.

Kiedy następuje powrót z procedury wartość tej zmiennej jest

przypisana do argumentu

.

ADA:

procedure PodzielPrzez2(a: in out Float) is
begin

a := a / 2;

end;

x : Float := 5.0;

PodzielPrzez2(x);

background image

Przekazywanie parametrów przez wartość

Przekazywanie parametrów przez wartość -- podsumowanie

podsumowanie

Rodzaj

Argument

Rozpoczęcie

procedury

Zakończenie

procedury

Przekazywanie do

wartość

PF = WA

-

Przekazywanie z

zmienna

-

ZA = PF

Przekazywanie do i z

zmienna

PF = WA

ZA = PF

PF – parametr formalny

WA – wartość argumentu

ZA – zmienna argumentu

background image

Przekazywanie parametrów przez referencję

Przekazywanie parametrów przez referencję

Przekazywanie parametrów przez referencję

- pozwala aby

parametr formalny był przypisany bezpośrednio do argumentu

Przekazywanie parametrów

przez referencje

przez referencje

Przekazywanie

stałych

Przekazywanie

zmiennych

Przekazywanie

funkcji

background image

Aliasing

Aliasing

Alising

– występuje przy przekazywaniu parametrów przez

referencję gdy, dwa lub więcej parametrów formalnych jest

bezpośrednio przypisanych do tej samej zmiennej.

void funkcja(int &v1, int &v2, int &v3)
{

{

v1 -= v3;
v2 += v3;

}

funckja(x,y,z);
funkcja(x,y,x);

background image

Zmienna liczba parametrów funkcji

Zmienna liczba parametrów funkcji

#include<stdarg.h> //

C++

int funkcja(int zmiennaNazwana, …) {

va_list args;
va_start(args, zmiennaNazwana);

char ch = va_arg(args, char);

char dp = va_arg(args, char);


va_end(args);

}

void funkcja(params string[] vars) //

C#

{

for (int i = 0; i < vars.Length; i++)

Console.WriteLine(vars[i].ToString());

}


Wyszukiwarka

Podobne podstrony:
Paradygmaty programowania wyk 1
Paradygmaty programowania wyk 4
Paradygmaty programowania wyk 2
Paradygmaty programowania wyk 3
Paradygmaty programowania wyk 1
Program wyk adow Podstawy marketingu, Marketing
Tresci kursu, studia Polibuda Informatyka, III semestr, języki paradygmaty programowania (jipp)
Kol W2, studia Polibuda Informatyka, III semestr, języki paradygmaty programowania (jipp), kolos 2
cwiczenie10d2013, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
program wyk, geografia, kompleksowa geografia fizyczna
cwiczenie8d2013, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
cwiczenie13d2012, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
cwiczenie9d2013, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
cwiczenie11d2013, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
cwiczenie6d2013, WSTI Pawia 55, Semestr I, Podstawy programowania (wyk, lab - L.Grad, Laboratoria
Metodologia geografii Program Wyk

więcej podobnych podstron