ÐÏࡱá>þÿ  þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot Entryÿÿÿÿÿÿÿÿ*0_šîÏ»òÀð^PÝ.D(Æ Contentsÿÿÿÿÿÿÿÿÿÿÿÿì ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot Entryÿÿÿÿÿÿÿÿ*0_šîÏ»òÀð^ð”_¿C(ÆÀ Contentsÿÿÿÿÿÿÿÿÿÿÿÿ— ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿýÿÿÿþÿÿÿ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  !"#$%&þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì‹{\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fmodern Courier New;}} {\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green175\blue0;} \deflang1033\pard\plain\f2\fs20\cf1 MODEL\plain\f2\fs20\cf0 : \par \plain\f2\fs20\cf2 ! Illustrates programming looping \par capabilities of LINGO by doing a \par binary search;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 SETS\plain\f2\fs20\cf0 : \par S1: X; \par \plain\f2\fs20\cf1 ENDSETS\plain\f2\fs20\cf0 \par \par \plain\f2\fs20\cf1 DATA\plain\f2\fs20\cf0 : \par \plain\f2\fs20\cf2 ! The key for which we will search;\plain\f2\fs20\cf0 \par KEY = 16; \par \plain\f2\fs20\cf2 ! The list (must be in sorted \par increasing order);\plain\f2\fs20\cf0 \par X = 2 7 8 11 16 20 22 32; \par \plain\f2\fs20\cf1 ENDDATA\plain\f2\fs20\cf0 \par \par \plain\f2\fs20\cf2 ! Do a binary search for key;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 CALC\plain\f2\fs20\cf0 : \par \plain\f2\fs20\cf2 ! Set begin and end points of search;\plain\f2\fs20\cf0 \par IB = 1; \par IE = \plain\f2\fs20\cf1 @SIZE\plain\f2\fs20\cf0 ( S1); \par \plain\f2\fs20\cf2 ! Loop to find key;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @WHILE\plain\f2\fs20\cf0 ( IB #LE# IE: \par \plain\f2\fs20\cf2 ! Cut bracket in half;\plain\f2\fs20\cf0 \par LOC = \plain\f2\fs20\cf1 @FLOOR\plain\f2\fs20\cf0 ((IB + IE)/2); \par \plain\f2\fs20\cf1 @IFC\plain\f2\fs20\cf0 ( KEY #EQ# X(LOC): \par \plain\f2\fs20\cf1 @BREAK\plain\f2\fs20\cf0 ; \plain\f2\fs20\cf2 ! Do no more loops;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @ELSE\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @IFC\plain\f2\fs20\cf0 ( KEY #LT# X( LOC): \par IE = LOC-1; \par \plain\f2\fs20\cf1 @ELSE\plain\f2\fs20\cf0 \par IB = LOC+1; \par ); \par ); \par ); \par \par \plain\f2\fs20\cf1 @IFC\plain\f2\fs20\cf0 ( IB #LE# IE: \par \plain\f2\fs20\cf2 ! Display key's location;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @PAUSE\plain\f2\fs20\cf0 ( 'Key is at position: ', LOC); \par \plain\f2\fs20\cf1 @ELSE\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf2 ! Key not in list;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @STOP\plain\f2\fs20\cf0 ( ' Key not on list!!!'); \par ); \par \plain\f2\fs20\cf1 ENDCALC\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 END\plain\f2\fs20\cf0 \par \par }   !"#$%&'þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì‹{\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fmodern Courier New;}{\f3\fswiss\fprq2 System;}} {\colortbl\red0\green0\blue0;\red0\green0\blue255;\red255\green0\blue0;\red0\green175\blue0;} \deflang1033\pard\plain\f2\fs20\cf1 MODEL\plain\f2\fs20\cf0 : \par \plain\f2\fs20\cf3 ! Illustrates programming looping \par capabilities of LINGO by doing a \par binary search;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 SETS\plain\f2\fs20\cf0 : \par S1: X; \par \plain\f2\fs20\cf1 ENDSETS\plain\f2\fs20\cf0 \par \par \plain\f2\fs20\cf1 DATA\plain\f2\fs20\cf0 : \par \plain\f2\fs20\cf3 ! The key for which we will search;\plain\f2\fs20\cf0 \par KEY = 16; \par \plain\f2\fs20\cf3 ! The list (must be in sorted \par increasing order);\plain\f2\fs20\cf0 \par X = 2 7 8 11 16 20 22 32; \par \plain\f2\fs20\cf1 ENDDATA\plain\f2\fs20\cf0 \par \par \plain\f2\fs20\cf3 ! Do a binary search for key;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 CALC\plain\f2\fs20\cf0 : \par \plain\f2\fs20\cf3 ! Set begin and end points of search;\plain\f2\fs20\cf0 \par IB = 1; \par IE = \plain\f2\fs20\cf1 @SIZE\plain\f2\fs20\cf0 ( S1); \par \plain\f2\fs20\cf3 ! Loop to find key;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @WHILE\plain\f2\fs20\cf0 ( IB #LE# IE: \par \plain\f2\fs20\cf3 ! Cut bracket in half;\plain\f2\fs20\cf0 \par LOC = \plain\f2\fs20\cf1 @FLOOR\plain\f2\fs20\cf0 ((IB + IE)/2); \par \plain\f2\fs20\cf1 @IFC\plain\f2\fs20\cf0 ( KEY #EQ# X(LOC): \par \plain\f2\fs20\cf1 @BREAK\plain\f2\fs20\cf0 ; \plain\f2\fs20\cf3 ! Do no more loops;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @ELSE\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @IFC\plain\f2\fs20\cf0 ( KEY #LT# X( LOC): \par IE = LOC-1; \par \plain\f2\fs20\cf1 @ELSE\plain\f2\fs20\cf0 \par IB = LOC+1; \par ); \par ); \par \plain\f2\fs20\cf2 )\plain\f2\fs20\cf0 ; \par \par \plain\f2\fs20\cf1 @IFC\plain\f2\fs20\cf0 ( IB #LE# IE: \par \plain\f2\fs20\cf3 ! Display key's location;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @PAUSE\plain\f2\fs20\cf0 ( 'Key is at position: ', LOC); \par \plain\f2\fs20\cf1 @ELSE\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf3 ! Key not in list;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @STOP\plain\f2\fs20\cf0 ( ' Key not on list!!!'); \par ); \par \plain\f2\fs20\cf1 ENDCALC\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 END\plain\f2\fs20\cf0 \par \par }