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
冬
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-
冬
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-
冬
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-
冬
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-
冬