Opis skryptowania

Proces rozdzielania punktów może odbywać się albo wszytanie punktacji z uprzednio przygotowane zbioru albo też przy pomocy skryptów napisanych aplikacji. Piewsza opcja jest bardziej pracochłonna gdyż wymaga od nas wyliczania w zewnętrznym programie uzyskanych punktów i dołącznia ich do istniejącego zbioru. W przypadku drugiem opcji piszemy skrypty (podobnie jak w excelu reguły), które na bieżącą wyliczają punktację. Zaletą tego rozwiązania jest to iż nie ma potrzeby wyliczania punktacji w przypadku dodawania nowej fali badania lub aktualizacji zbioru.

Składnia języka

Składnia języka jest bardzo zbliżona do Java Script. Cały process skrytpowania polega na zdefiniowaniu 2 wartości: ret i max. Zmienna ret określa ile punktów należy przydzielić w zależności od odpowiedzi na wybrane pytanie. Zmienna max określa ile maksymalnie puntków można uzyskać. Zmienna max jest opcjonalna i nie ma potrzeby jej defniowania o ile wartość ta jest stała dla wszystkich puntków inspekcji. W skrypcie dostepne są wszystkie zmienne dostepne w bazie wynikowej i w zalezności od typu są zadeklarowane jako:

  • CHARACTER - jako zmienna typu String (łańcuch znaków)
  • SINGLE - jako zmienna typu Integer
  • MULTIPLE - jako zmienna typu Integer
  • QUANTITY - jako zmienna typu Real

Operatory

Dostępne są następujące operatory:

OperatorOpisPrzykład
+Operator dodawaniaa + b
-Operator odejmowaniaa - b
*Operator mnożeniaa * b
/Operator dzieleniaa / b
%Operator modulo (reszta z dzielenia)a % b
=Operator przypisaniac = a
+=Operator przypisania z dodawaniemc += a
-=Operator przypisania z odejmowaniemc -= a
*=Operator przypisania z mnożeniemc *= a
/=Operator przypisania z dzieleniemc /= a
++Operator inkrementacjia++, to samo co a += 1
--Operator dekrmentacjia--, to samo co a -= 1

Warunki logiczne

W skrypcie dostepne są następujące warunki logiczne wykorzystywane w składni if:

WarunekOpisPrzykład
==Znak równościif (a == b) ret = 1; else ret = 0;
<Znak mniejszościif (a < b) ret = 1; else ret = 0;
>Znak większościif (a > b) ret = 1; else ret = 0;
<=Mniejszy równyif (a <= b) ret = 1; else ret = 0;
>=Większy równyif (a >= b) ret = 1; else ret = 0;

W przypadku zmienych zapisanych w pliku ASCII jako CHARACTER dostępne są następujące warunki:

WarunekOpisPrzykład
equalsTeksty takie sameif (a.equals("Tak")) ret = 1; else ret = 0;
equalsIgnoreCaseTeksty takie same niezależnie od wielkości literif (a.equalsIgnoreCase("Tak")) ret = 1; else ret = 0;
indexOfZawiera ciąg znaków na pozycji (-1 jeżeli brak)if (a.indexOf("Bank")>=0) ret = 1; else ret = 0;

Składnia if jest używana do sprawdzania warunku logicznego. Jeżeli warunek jest spełniony wykonywane jest polecenie po warunku. Jeżeli warunek jest niespełniony wykonywane jest polecenie po else. W przypadku jeżeli polecenie jest bardziej rozbudowane (składa się z kilku poleceń) możemy jest ująć w nawiasy {} np.

if (q1==1) then {
  ret = 1;
  max = 1;
}
else if (q1==2) then {
  ret = 0;
  max = 1;
}
else {
  ret = 0;
  max = 0;
}

Sprawdzanie skryptów

W celu sprawdzenia poprawności działania skryptów dostępny jest podgląd w którym możemy zobaczyć ilość udzielonych punktów w zależności od udzielonej odpowiedzi.

Przykłady

W obecnym przykładzie chcemy rozdzielić punkty względem całej grupy składającej się z 10 pytań. Punkty będą przydzielane na podstawie udzielanych odpowiedzi w oparciu o kanał z czterema odpowiedziami. Każda z nich wpływa na rozdział punktów.

if (q2==3){
	iloscger=0; 
	if (q100==1) iloscger +=1;
	if (q101==1) iloscger +=1;
	if (q104==1) iloscger +=4;
	if (q105==1) iloscger +=4;
	if (q106==1) iloscger +=4;
	if (q107==1) iloscger +=1;
	if (q108==1) iloscger +=1;
	if (q109==1) iloscger +=1;
	if (q110==1) iloscger +=1;
	if (q111==1) iloscger +=1;
	ret=iloscger;
}
else if (q2==2){
	iloscemp=0;
	if (q104==1) iloscemp +=1*5.06666667;
	if (q105==1) iloscemp +=1*5.06666667;
	if (q106==1) iloscemp +=1*5.06666667;
	if (q107==1) iloscemp +=1*1.26666667;
	if (q108==1) iloscemp +=1*1.26666667;
	if (q109==1) iloscemp +=1*1.26666667;
	ret=iloscemp;
}
else if (q2==1){
	iloscart=0;
	if (q104==1) iloscart +=1*5.06666667;
	if (q105==1) iloscart +=1*5.06666667;
	if (q106==1) iloscart +=1*5.06666667;
	if (q107==1) iloscart +=1*1.26666667;
	if (q108==1) iloscart +=1*1.26666667;
	if (q109==1) iloscart +=1*1.26666667;
	ret=iloscart;
}
else if (q2==4){
	iloscplayz=0;
	if (q104==1) iloscplayz +=1*4.75;
	if (q105==1) iloscplayz +=1*4.75;
	if (q106==1) iloscplayz +=1*4.75;
	if (q107==1) iloscplayz +=1*1.1875;
	if (q108==1) iloscplayz +=1*1.1875;
	if (q109==1) iloscplayz +=1*1.1875;
	if (q110==1) iloscplayz +=1*1.1875;
	ret=iloscplayz; 
	
}

Przykłady skryptu dla pytania typu multi.

Zakładając, że w kafeterii mamy 10 wskazań. Punktacja wyglądać ma następująco: Jeżeli respondent wskazał 7 lub więcej odpowiedzi - przyznajemy 2 punkty, jeżeli liczba wskazań wynosi 4-6 przyznajemy 1 punkt. Pozostali otrzymują zero punktów.

ret=0;
max=1;
if(q123.length>=4)ret=1;
if(q123.length>=7)ret=2;

Kolejny przykład. Teraz sprawdzamy czy padły odpowiedzi o kodach 1, 2, 3 lub 4. Jeżeli padły co najmniej trzy takie odpowiedzi to przynajemy 1 punkt.

max=1;
ret=0;
int res = -1;
int suma=0;

res=Arrays.binarySearch(q123,1); //sprawdzamy, czy w tablicy z udzielonymi odpowiedziami znajduje się kod 1. Jeżeli tak, to wynikiem będzie pozycja tego kodu w tablicy - czyli wartość większa od zera
if(res>=0)suma=suma+1; //sumujemy liczbę wskazań - jeżeli znaleziono w tablicy kod jeden, to do sumy dodajemy 1.
res=Arrays.binarySearch(q123,2);
if(res>=0)suma=suma+1; //sumujemy liczbę wskazań - jeżeli znaleziono w tablicy kod dwa, to do sumy dodajemy 1.
res=Arrays.binarySearch(q123,3);
if(res>=0)suma=suma+1; //sumujemy liczbę wskazań - jeżeli znaleziono w tablicy kod trzy, to do sumy dodajemy 1.
res=Arrays.binarySearch(q123,4);
if(res>=0)suma=suma+1; //sumujemy liczbę wskazań - jeżeli znaleziono w tablicy kod cztery, to do sumy dodajemy 1.

if(suma>=3)ret=1; //przypisanie punktów

W podglądzie dostępne są wszystkie zmienne, które mają wpływ na wynik.