One of the most
powerful features of PollMaker is the ability to define branching
logic. Branching logic allows you to create polls that alter their
behavior based on the input of a respondent. With branching logic,
based on one or more previous responses in the course of a poll, you
can skip ahead screens, launch another poll, choose to not save the
current respondent's data or end the current poll. As a result, you
can develop sophisticated polls that adapt to the input of the
respondent and ask only the questions that are most pertinent to
each individual respondent.
Stucture of Branching
Logic
Branching logic
consists of a conditional statement that specifies different
resulting action based on whether the assertions contained within
the statement evaluate to true or false. The general format of
branching logic statements is:
IF |
{ [Assertion
#1] = True (or
False) } |
|
|
AND/OR |
|
|
{ [Assertion
#2] = True (or
False) } |
|
THEN |
|
< Resulting Action if Conditional
Statements evaluate True > |
ELSE |
|
< Resulting Action if Conditional
Statements evaluate False >
| |
Among its many
potential implementations, branching logic can be used to ask a
respondent for further detail about a previous answer. For example,
if a respondent selects travel as an answer to a question asking
about personal interests, branching logic specifies that this
respondent will be shown a poll screen asking for the places to
which he has travelled. On the other hand, the same branching logic
specifies that respondents who do not select travel as a personal
interest will skip this question. Therefore, respondents of this
poll are prevented from answering questions that do not pertain to
them.
Implementing Branching
Logic
Branching logic is
implemented through the screen properties within an individual poll
screen. Within a poll screen, branching logic can be set to be
evaluated either immediately before the poll screen is displayed
during the poll or immediately after the respondent leaves the poll
screen during the poll.
Poll Designer makes the
formulation of branching logic simple by providing a graphical
interface called the Branch Logic Dialog (figure 1) for constructing
branching logic statements. Each tab on this dialog corresponds to a
different portion of the branching logic statement.
Figure 1: Poll Designer - Branch Logic
Dialog
The poll designer uses
the IF... tab (figure 1) on the Branch Logic Dialog to create
one or more assertions to be evaluated in a branching logic
statement. This tab shows a list of the poll screens within the
current poll and allows the designer to drill down to the possible
answers contained on each poll screen. As a result, the poll
designer can select the answer to be included in each assertion and
whether the branching logic statement asserts that the answer was
selected or not selected by the respondent. Multiple assertions can
be combined with the keyword "AND" or "OR" (e.g. answer 1 was
selected by respondent OR answer 2 was selected by
respondent).
The poll designer uses
the THEN... tab (figure 1) on the Branch Logic Dialog to
specify the action that will occur if the assertion portion of the
branching logic statement evaluates to true and the ELSE...
tab (figure 1) to specify the action that will occur if the
assertion portion evaluates to false. Both of these tabs offer the
poll designer the same choices of actions:
Action |
Description |
SAVE Poll Data and Jump to End-of-Poll
Screen |
The respondent will be taken directly to the
last screen in the poll. The response data for the current
respondent will be saved. |
DUMP Poll Data and Jump to End-of-Poll
Screen |
The respondent will be taken directly to the
last screen in the poll. The response data for the current
respondent will be discarded. |
Jump directly to screen ... |
The respondent will be taken directly to the
screen specified in a list of all poll screens. |
SET Variable X to <TRUE> or
<FALSE> |
The poll variable X (see the "Advanced
Branching Logic" topic below) will be set to the value (true
or false) specified by the poll designer. |
LAUNCH Poll X |
Launches the sub-poll specified in the list of
sub-polls (see the "Advanced Branching Logic" topic
below). |
SKIP this screen and continue |
The poll screen within which the poll designer
has created this branching logic statement will be skipped and
the respondent will be shown the next screen in the
poll. |
DO this screen and continue |
The poll screen within which the poll designer
has created this branching logic statement will be shown as
normal. |
The Symbol View
tab (figure 1) allows the poll designer to view the branching logic
statement that has been created using the graphical interface on the
other three tabs (see the "Structure of Branching Logic" topic above
for the general format of branching logic statements). As the poll
designer becomes more comfortable with the syntax of these
statements, she can edit these statements directly on this tab if
she desires.
Advanced Branching Logic
Functionality
Poll Designer provides
additional branching logic functionality beyond simply skipping poll
screens or ending a poll based on whether a previous answer was or
was not chosen by the respondent. Examples of advanced branching
logic capabilities include the nesting of branching logic
statements, the definition of poll variables and the use of
sub-polls.
Nesting Branching
Logic Statements Nested branching logic statements are useful
when you have more than two responses for which you wish to take
different actions. For example, suppose that in a poll you ask the
respondent to choose one of three choices: whether he drinks
Coca-Cola, Pepsi or has no preference between the two. You want to
ask different questions within the poll based on the respondent's
answer. Since branching logic statements only allow you to specify
actions if an assertion is true or false (e.g. drinks Coca-Cola or
doesn't drink Coca-Cola), you cannot create a simple statement that
will handle all three of these options. In order to specify actions
for all three cases, you must create a branching logic statement
within a branching logic statement. This nested branching logic
statement would look something like:
IF { [Soft Drink?:Coca-Cola] = True
} |
THEN |
|
<Skip to questions about
Coca-Cola> |
ELSE |
|
EVALUATE |
|
|
IF { [Soft Drink?:Pepsi] = True
} |
|
|
THEN |
|
|
|
<Skip to questions about Pepsi> |
|
|
ELSE |
|
|
|
<Skip all questions about soft drinks> |
|
GO; | |
The EVALUATE
& GO key words delineate the beginning and the end
respectively of a nested branching logic statement. Poll Designer
allows an infinite number of levels to be nested in this
manner.
Poll
Variables Poll variables can be defined
for a poll within Poll Designer. These boolean variables always have
a default value of false each time the poll begins, but the value of
poll variables can be changed in branching logic statements during
the course of a poll. Poll variables can be useful if you have the
same compound assertion that you test in several branching logic
statements within the poll. For example, if you test more than once
during your poll whether the respondent is a guest in your hotel and
dined at the hotel restaurant and ordered a special dish, you could
create a poll variable called GuestAteSpecial. You could set this variable to true or
false with a branching logic statement, and then each time you test
for this criteria, you could use the poll variable as your assertion
instead of recreating the entire list of conditions. As a result,
your poll design becomes easier to understand and
maintain.
Sub-Polls A sub-poll
is simply another poll that is launched by a branching logic
statement in the current poll. In this context, the poll that
launches a sub-poll is referred to as the parent poll. When the
evaluation of a branching logic statement in the parent poll results
in the launch of a sub-poll, the Polling Engine loads the sub-poll
into memory and continues with the current polling session. To the
respondent, this switch is seamless, and the parent poll and
sub-poll appear as a single poll. Poll Designer also allows you to
specify within a poll the names of any sub-polls that might be
launched from the poll. These sub-polls will be loaded into memory
when the original poll is first loaded into memory. As a result,
sub-polls will be launched with less delay since they already reside
in memory.
As polls grow in size
and complexity, the use of sub-polls allows the poll designer to
better organize and maintain large polls. A common use of sub-polls
is to provide a single poll in multiple languages. In the parent
poll, the respondent chooses a language preference, and then
branching logic launches the sub-poll that contains poll questions
in the desired language.
Return to Poll
Creation.
|