Sosnowiec, dn.... Imię i nazwisko... Test znajomości zaawansowanch technik programowania składa się z 10 ptań. Dla każdego ptania zaproponowano czter odpowiedzi, z którch tlko jedna jest prawidłowa. Na ptania odpowiadam wpisując literę A, B, C lub D w odpowiedniej kratce na ostatniej stronie. Prolog Ptanie 1 Dan jest program: sprawdź(słowo) :- dobre(słowo, układ(0, 0)). dobre([], układ(0, 0)). dobre([a T], układ(0, 0)) :- dobre(t, układ(0, 0)). dobre([b T], układ(0, 0)) :- dobre(t, układ(0, 0)). dobre([c T], układ(0, 0)) :- dobre(t, układ(0, 2)). dobre([c T], układ(0, 2)) :- dobre(t, układ(0, 0)). dobre([d T], układ(0, 0)) :- dobre(t, układ(2, 0)). dobre([d T], układ(2, 0)) :- dobre(t, układ(0, 0)). dobre([e,e T], układ(0, 0)) :- dobre(t, układ(0, 0)). dobre([e,e T], układ(0, 2)) :- dobre(t, układ(0, 2)). dobre([e,e T], układ(2, 0)) :- dobre(t, układ(2, 0)). dobre([e,a T], układ(0, 0)) :- dobre(t, układ(0, 0)). dobre([e,b T], układ(0, 0)) :- dobre(t, układ(0, 0)). dobre([e,c T], układ(2, 0)) :- dobre(t, układ(0, 0)). dobre([e,d T], układ(0, 2)) :- dobre(t, układ(0, 0)). Jaki będzie wnik zaptań: (i) sprawdź([b,d,e,c,a]). (ii) sprawdź([e,d,b,c,a]).? (A) (i) false (ii) false (B) (i) false (ii) true (C) (i) true (ii) false (D) (i) true (ii) true Ptanie 2 Wbudowan predkat append, sprawdzając cz trzecia tablica jest złączeniem dwóch pierwszch, zdefiniowano następująco: append([], L, L). append([x L1, L2, [X L3]) :- append(l1, L2, L3). Jaki będzie wnik zaptania setof(a+b, append(a,b,[1,2,3]),z).? (A) Z = [[]+[1, 2, 3], [1]+[2, 3], [1, 2]+[3], [1, 2, 3]+[]]. (B) Z = [[3], [4], [5]]. (C) Z = [3, 4, 5]. (D) Z = [[1, 2, 3], [3, 3], [1, 5], [1, 2, 3]]. Haskell Ptanie 3 Dana jest funkcja: f x = takewhile ((x>=).(^)) [0..] 1
Jaka będzie wartość wrażenia f 9 2? (A) parse error on input `[0..]' (B) No instance for ((x>=).(^)) (C) [2,3,4,5,6,7,8,9] (D) [0,1,2,3] Ptanie 4 Rozważm dialog z sstemem ghci: > let f = foldr (\x -> if x > then x else ) 0 > :tpe f Jak zostanie określon tp funkcji? (A) f :: Integer -> Integer (B) f :: [Integer] -> Integer (C) f :: Integer -> [Integer] (D) f :: [Integer] -> [Integer] Message-Passing Interface (MPI) Ptanie 5 Dan jest program: #include <iostream> #include "mpi.h" using namespace std; int m_rank; int p; MPI_Status status; #define S 9 #define N 10 int tab[n] = -2, 3, 5, 1, 4, -1, 0, 2, 6, 7; int main(int argc, char* argv[]) MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &m_rank); MPI_Comm_size(MPI_COMM_WORLD, &p); int znaleziono = false; for (int i = m_rank; not znaleziono && i < N-1; i += p) for (int j = i+1; not znaleziono && j < N; j++) if (tab[i] + tab[j] == S) znaleziono = true; cout << znaleziono << endl; MPI_Finalize(); return 0; Załóżm, że po skompilowaniu go (do programu o nazwie zad) uruchomiono program mpd, a następnie uruchomiono skompilowan program poleceniem mpiexec -l -n 2./zad na masznie dwuprocesorowej. Jaki będzie wnik jego działania ( = endl)? (A) 0: 0 1: 0 (B) 0: 0 1: 1 (C) 0: 1 1: 0 (D) 0: 1 1: 1 2
Open Multi-Processing (OpenMP) Ptanie 6 Dan jest program: #include <omp.h> #include <iostream> using namespace std; int main (int argc, char *argv[]) int lw, nr; // liczba wątków, numer wątku float suma=0.0; #pragma omp parallel private(nr) nr = omp_get_thread_num(); if (nr == 0) lw = omp_get_num_threads(); cout << "lw:" << lw << " "; #pragma omp barrier #pragma omp for for (int i=1; i<=5; i++) suma = suma + i*1.0; #pragma omp critical cout << nr << ":" << suma << " "; Załóżm, że po skompilowaniu tego programu z odpowiednią opcją wskazującą, że program źródłow napisan jest z użciem interfejsu OpenMP, następnie uruchomiono go na masznie z procesorem dwurdzeniowm. Jaki na pewno nie będzie wnik jego działania? (A) lw:2 0:15 1:15 (B) lw:2 1:15 0:15 (C) 1:15 lw:2 0:15 (D) lw:2 1:9 0:9 Wrażenia regularne Ptanie 7 Dan jest tekst: babb cbbcbc accac bbaba bacb bbbbbbb Jaki będzie efekt zastąpienia w nim wszstkich podciągów pasującch do wzorca \b(?=[^ ]*a)(?=[^ ]*c)[abc]+?\b przez łańcuch ***? (A) *** *** accac *** bacb *** (B) babb cbbcbc accac bbaba bacb *** (C) *** *** *** *** *** bbbbbbb (D) babb cbbcbc *** bbaba *** bbbbbbb 3
Ptanie 8 Dan jest tekst: 03824531449411615213441829503544272752010217443235 Znajdź wszstkie podciągi pasujące do wzorca 44\d3(?=(\d5)*$) (A) 44941, 44182, 44272, 44323 (B) 44182, 44272 (C) 44941 (D) 44323 Extensible Markup Language (XML) Ptanie 9 Tp dokumentu został zdefiniowan w następującm pliku figur.dtd: <!ENTITY % barw "(czarn biał żółt czerwon)"> <!ELEMENT figur (trójkąt kwadrat)+> <!ELEMENT punkt EMPTY> <!ATTLIST punkt x NMTOKEN #REQUIRED NMTOKEN #REQUIRED > <!ELEMENT trójkąt (punkt, punkt, punkt)> <!ATTLIST trójkąt kolor %barw; "biał"> <!ELEMENT kwadrat (punkt, punkt)> <!ATTLIST kwadrat kolor %barw; "czarn"> Załóżm, że poniższ plik XML został poddan kontroli prawidłowości dokumentu pod względem właściwej konstrukcji opisanej w pliku DTD. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE figur SYSTEM "figur.dtd"> <figur> <kwadrat kolor="żółt"> <punkt x="0" ="0" /> <punkt x="1" ="1" /> <trójkąt kolor="czerwon"> <punkt x="0" ="0" /> <punkt x="1" ="1" /> <punkt x="2" ="2" /> <trójkąt> <punkt ="0" x="-1" /> <punkt x="1" ="1" /> <punkt x="1" ="2" /> </figur> Które z poniższch stwierdzeń jest prawdziwe? (A) Nie zostanie zgłoszon żaden wjątek. (B) Zostanie zgłoszon wjątek z tego powodu, że pierwsz trójkąt opisan jest trzema współliniowmi punktami. (C) Zostanie zgłoszon wjątek z tego powodu, że w drugim trójkącie nie określono koloru. (D) Zostanie zgłoszon wjątek z tego powodu, że kolejność współrzędnch w pierwszm punkcie drugiego trójkąta jest nieprawidłowa. 4
Ptanie 10 Dan jest plik kolekcja.xml: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE figur SYSTEM "figur.dtd"> <figur> <kwadrat kolor="biał"> <punkt x="0" ="0" /> <punkt x="1" ="1" /> <kwadrat kolor="żółt"> <punkt x="0" ="0" /> <punkt x="2" ="3" /> <trójkąt kolor="czerwon"> <punkt x="-2" ="0" /> <punkt x="1" ="1" /> <punkt x="1" ="2" /> <trójkąt kolor="czarn"> <punkt x="0" ="-1" /> <punkt x="1" ="1" /> <punkt x="1" ="2" /> </figur> oraz następując program: import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.xml.sax.*; public class MojaXML public static void main(string[] args) tr DocumentBuilderFactor factor = DocumentBuilderFactor.newInstance(); factor.setvalidating(true); factor.setignoringelementcontentwhitespace(true); DocumentBuilder builder = factor.newdocumentbuilder(); File f = new File("kolekcja.xml"); Document doc = builder.parse(f); Element root = doc.getdocumentelement(); Element figura = (Element)root.getLastChild(); figura = (Element)figura.getPreviousSibling(); Sstem.out.println(figura.getTagName()+":"+figura.getAttribute("kolor")); catch (Exception e) Jaki będzie wnik jego działania? (A) kwadrat:biał (B) punkt:żółt (C) trójkąt:czerwon (D) punkt:czarn Ptanie nr: 1 2 3 4 5 6 7 8 9 10 Odpowiedź: 5