background image

Egzamin poprawkowy z Inżynierii Oprogramowania, rok II

grupa A

EGZAMIN POPRAWKOWY

Z INŻYNIERII OPROGRAMOWANIA, GRUPA A

Rok II, kierunek Informatyka, studia dzienne inżynierskie

CZĘŚĆ PIERWSZA – ZADANIA

Imię i nazwisko …..............................................................................

Nr albumu …..................

Zadanie 1. (3 punkty)

Poniżej   podano   graf   PERT   dla   pewnego   projektu.   Wylicz   czas   oczekiwany   realizacji   całości.
Pod rysunkiem, w tabeli, podano czasy realizacji poszczególnych etapów.

Etap A

Etap B

Etap C

O

M

P

O

M

P

O

M

P

3

7

9

4

8

10

2

5

6

Zadanie 2. (1 punkt)

Znajdź błąd w poniższym programie i napisz, na czym on polega.

using

 System;

namespace

 zadanie2grupaA

{

public

 

class

 liść_bst

{

public

 liść_bst LiśćLewy;

//

Lewe podrzewo

public

 liść_bst LiśćPrawy;

//

Prawe podrzewo

public

 

double

 WartośćZapamiętana;

//

Wartość przechowywana w liściu

public

 liść_bst (

double

 Wartość)

{

LiśćLewy = 

null

;

LiśćPrawy = 

null

;

WartośćZapamiętana = Wartość;

}

//

Koniec konstruktora

public

 

void

 DopiszNowy(

double

 Wartość) 

//

Metoda służąca do dopisywania nowej wartości

{

if

(Wartość > WartośćZapamiętana)

{

if

(LiśćPrawy == 

null

)

//

Dopisywanie do prawego poddrzewa

{

-1/5-

A

C

B

background image

Egzamin poprawkowy z Inżynierii Oprogramowania, rok II

grupa A

LiśćPrawy = 

new

 liść_bst(Wartość);

}

else

{

LiśćPrawy.DopiszNowy(Wartość);

}

//

Koniec dopisywania do prawego poddrzewa

}

else

{

if

(LiśćLewy == 

null

)

//

Dopisywanie do lewego poddrzewa

{

LiśćLewy = 

new

 liść_bst(Wartość);

}

else

{

LiśćLewy.DopiszNowy(Wartość);

}

//

Koniec dopisywania do lewego poddrzewa

}

//

end if dopisywania

}

//

Koniec metody służącej do dopisywania nowej wartości

public

 

void

 usuń_drzewo() 

//

Metoda usuwająca drzewo z pamięci

{

LiśćLewy = 

null

;

if

(LiśćLewy != 

null

) LiśćLewy.usuń_drzewo();

if

(LiśćPrawy != 

null

) LiśćPrawy.usuń_drzewo();

LiśćPrawy = 

null

;

}

}

//

Koniec klasy liść_bst

}

Zadanie 3. (1 punkt)

Na podstawie podanego diagramu UML napisz kod szkieletowy w języku C#.

-2/5-

background image

Egzamin poprawkowy z Inżynierii Oprogramowania, rok II

grupa A

Zadanie 4. (3 punkty)

Dana jest klasa obliczająca parametry sygnału spróbkowanego (na przykład cyfrowego
dźwięku). Napisz test jednostkowy, testujący metody zawarte w klasach. Dla przypomnienia:

Wartość średnia: 

x

śr

=

1

N

i=1

N

x

i

; Energia:

E=

i=1

N

x

i

2

;Wartość skuteczna:

U

sk

=

i=1

N

x

i

2

N

N – oznacza liczbę próbek, x

i

 – poszczególne wartości próbek.

using

 System;

namespace

 zadanie4grupaA

{

public

 

class

 ParametrySygnału

{

public

 

double

 Energia;

public

 

double

 WartośćSkuteczna;

public

 

double

 WartośćŚrednia;

private

 

double

[] PróbkiSygnału;

public

 ParametrySygnału() 

//

Konstruktor

{

Energia = 

0

;

WartośćSkuteczna = 

0

;

WartośćŚrednia = 

0

;

PróbkiSygnału = 

null

;

}

//

Koniec konstruktora

public

 

void

 ObliczParametry(

double

[] Dane) 

//

Obliczanie parametrów

{

PróbkiSygnału = Dane;

}

//

Koniec obliczania

private

 

void

 ObliczanieŚredniej() 

//

Obliczanie średniej

{

int

 i;

double

 Średnia;

Średnia = 

0

;

if

(PróbkiSygnału != 

null

)

{

for

(i=

0

;i<PróbkiSygnału.Length;i++)

{

Średnia = Średnia + PróbkiSygnału[i];

}

}

WartośćŚrednia = Średnia;

}

//

Koniec obliczania średniej

private

 

void

 ObliczanieEnergii() 

//

Obliczanie energii i wartości skutecznej

{

int

 i;

double

 WartośćEnergii;

double

 WyliczonaWartośćSkuteczna;

WartośćEnergii = 

0

;

WyliczonaWartośćSkuteczna = 

0

;

if

(PróbkiSygnału != 

null

)

{

for

(i=

0

;i<PróbkiSygnału.Length;i++)

{

WartośćEnergii = WartośćEnergii + (PróbkiSygnału[i] * 

PróbkiSygnału[i]);

-3/5-

background image

Egzamin poprawkowy z Inżynierii Oprogramowania, rok II

grupa A

}

WyliczonaWartośćSkuteczna = 

Math.Sqrt(WartośćEnergii/PróbkiSygnału.Length);

}

Energia = WartośćEnergii;

WartośćSkuteczna = WyliczonaWartośćSkuteczna;

}

//

Koniec obliczania energii i wartości skutecznej

}

}

Zadanie 5. (1 punkt)

Na podstawie kodu zamieszczonego poniżej, narysuj diagram klas UML.

using

 System;

namespace

 zadanie5grupaA

{

public

 

class

 wskazówka

{

public

 

double

 DługośćWskazówki;

public

 

int

 KolorWskazówki;

}

}

using

 System;

namespace

 zadanie5grupaA

{

public

 

class

 tarcza

{

public

 

double

 ŚrednicaTarczy;

public

 

int

 KolorTarczy;

public

 

int

 RodzajCyfr;

public

 

static

 

int

 CYFRY_ARABSKIE = 

1

;

public

 

static

 

int

 CYFRY_RZYMSKIE = 

2

;

public

 

static

 

int

 CYFRY_CHIŃSKIE = 

3

;

}

}

using

 System;

namespace

 zadanie5grupaA

{

public

 

class

 mechanizm

{

public

 

int

 RodzajMechanizmu;

public

 

static

 

int

 MECHANIZM_SPRĘŻYNOWY = 

1

;

public

 

static

 

int

 MECHANIZM_WAHADŁOWY = 

2

;

public

 

static

 

int

 MECHANIZM_ELEKTRYCZNY = 

3

;

}

}

using

 System;

namespace

 zadanie5grupaA

{

public

 

class

 zegarek

{

public

 wskazówka WskazówkaGodzinowa;

public

 wskazówka WskazówkaMinutowa;

public

 wskazówka WskazówkaSekundowa;

public

 tarcza TarczaZegara;

public

 mechanizm MechanizmZegara;

public

 

int

 BieżącaGodzina;

public

 

int

 BieżącaMinuta;

public

 

int

 BieżącaSekunda;

}

}

-4/5-

background image

Egzamin poprawkowy z Inżynierii Oprogramowania, rok II

grupa A

Zadanie 6. (1 punkt)

Oblicz wynagrodzenie dla programisty piszącego samodzielnie kod (stawka godzinowa).
Klient zgodził się zapłacić za program 10000 zł, kod szacunkowo będzie się składał z około
10000 linii. Programista popełnia statystycznie dziesięć błędów na 100 linii kodu, przy czym jego
szybkość pisania wynosi cztery linie na minutę.

CZĘŚĆ DRUGA – TEORIA

Zadanie 1. (2 punkty)

Jakie jest przeznaczenie wykresów Gantt’a? Opisz krótko najważniejsze pojęcia z nim związane.

Zadanie 2. (2 punkty)

Co to jest diagram maszyny stanowej? Podaj trzy główne symbole związane z tym diagramem
i krótko je opisz.

Zadanie 3. (2 punkty)

Do   czego   używa   się   metryk   kodu?   Podaj   najczęściej   stosowaną   metrykę   i   cechy,   jakie   musi 
posiadać każda metryka kodu.

Zadanie 4. (2 punkty)

Czym jest debugowanie kodu? Podaj co najmniej dwie zasady pisania kodu, dzięki którym można 
uniknąć najczęściej popełnianych błędów.

Zadanie 5. (2 punkty)

Na czym polega zarządzanie projektem informatycznym? Wymień i opisz zwięźle główne trzy 
sposoby zarządzania zespołem programistów.

Punktacja i ocena (część zadaniowa i teoretyczna jest oceniana oddzielnie). Ocena końcowa jest 
średnią arytmetyczną z obydwu części, przy czym  konieczne jest uzyskanie pozytywnej oceny
z części zadaniowej do zaliczenia egzaminu.

Punkty

Ocena

Punkty

Ocena

0 – 4,9

2.0

7 – 7,9

4,0

5 – 5,9

3,0

8 – 8,9

4,5

6 – 6,9

3,5

9 – 10

5,0

-5/5-