File:  [LON-CAPA] / loncom / html / adm / help / tex / Spreadsheet_Functions.tex
Revision 1.10: download - view: text, annotated - select for diffs
Sun Jan 3 04:45:45 2016 UTC (8 years, 6 months ago) by lira
Branches: MAIN
CVS tags: HEAD
add example of compact 'if'. fix formatting.

\label{Spreadsheet_Functions}
The following special functions are available in the spreadsheet.
Please see \textbf{Referencing Cells} (\ref{Spreadsheet_Referencing_Cells})
for information on specifying cells and ranges.

\begin{itemize}

\item \texttt{\&NUM(range)} - number of non-empty cells in range
\index{NUM}

\item \texttt{\&BIN(low, high, range)} - number of non-empty cells in
  range with values between low and high
\index{BIN}

\item \texttt{\&SUM(range)} - sum of the non-empty cells in range
\index{SUM}

\item \texttt{\&MEAN(range)} - mean value of non-empty cells in range
\index{MEAN}

\item \texttt{\&STDDEV(range)} - standard deviation of non-empty cells
  in range 
\index{STDDEV}

\item \texttt{\&PROD(range)} - product of non-empty cells in range
\index{PROD}

\item \texttt{\&MAX(range)} - maximum value of non-empty cell in range
\index{MAX}

\item \texttt{\&MIN(range)} - minimum value of non-empty cells in
  range 
\index{MIN}

\item \texttt{\&SUMMAX(n ,range)} - sum of the maximum $n$ non-empty
  cells in range
\index{SUMMAX}

\item \texttt{\&SUMMIN(n, range)} - sum of the minimum $n$ non-empty
  cells in range
\index{SUMMIN}

\item \texttt{\&EXT(expression)} - access to EXT function in lonnet.
Use \texttt{\&EXT(`system.time')} to retrieve the current time.
\index{EXT}

\item \texttt{\&PARM(parameter)} - get the value of a specific parameter 
\index{PARM}

\item \texttt{\&MINPARM(expression)} - get the value of a parameter that 
matches the expression that is the smallest in value (If one specified 
'opendate' it would return the smallest opendate set on the problem.)
\index{MINPARM}

\item \texttt{\&MAXPARM(expression)} -  get the value of a parameter that 
matches the expression that is the largest in value (If one specified 
'opendate' it would return the largest opendate set on the problem.)
\index{MAXPARM}

\item \texttt{\&SUMSEQ(column,sequence1,sequence2,sequence3,...)} -
sum the given column across the folders or sequences listed.

When specifying a sequence use the full title.  Instead of a sequence title
the word \texttt{all} can be used to sum over all sequences.  Regular expressions
can be entered as well, if prefixed by \texttt{regexp:}.  See below for examples.

\begin{itemize}

\item \texttt{\&SUMSEQ(`Z',`Chapter 1');}

\item \texttt{\&SUMSEQ(`Z',`Chapter 1',`Chapter 2',`Chapter 3');}

\item \texttt{\&SUMSEQ(`Z',`all');} - sum over all sequences.

\item \texttt{\&SUMSEQ(`Z',`regexp:Large Biomolecules');} -
 sum over all sequences which match the regular expression 
/Large Biomolecules/.

\end{itemize}

\end{itemize}

\noindent
In addition, most non-IO Perl functions work in cells. Perl offers a compact \texttt{if} structure using the logic
\texttt{TEST\char`_EXPR?IF\char`_TRUE\char`_EXPR\char`:IF\char`_FALSE\char`_EXPR;}. The \texttt{if} statements can be nested. For example, to scale the points awarded on the assessment spreadsheet (by default in \texttt{Z0}) with the number of tries (by default in \texttt{C0}), the adjusted score can be programmed in an empty cell in assessment spreadsheet row 0, where\\

\noindent
\texttt{C0$>$2 ? (0.5*Z0) \char`: (C0$>$1 ? (0.75*Z0) \char`: Z0);}\\

\noindent
is equivalent to
 
\begin{verbatim}
if (C0 > 2) {
  $cellvalue = 0.5*Z0; 
} elsif (C0 > 1) {
  $cellvalue = 0.75*Z0;
} else {$cellvalue = Z0;}
$cellvalue;
\end{verbatim}

Use of parantheses is usually necessary in the compact \texttt{if} statement to assure correct precedence.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>