[Gambas-user] WHILE and AND: please explain me....

Fabien Bodard gambas.fr at ...626...
Fri May 7 14:05:12 CEST 2010


and a tips :
FOR i = 1 TO (matrix.Count - 1)

you can do :

FOR i = 1 TO matrix.Max



2010/5/7 Fabián Flores Vadell <fabianfloresvadell at ...626...>:
> 2010/5/4, Leonardo Miliani <leonardo at ...1237...>:
>> I'm working with this little piece of code, it's the Insertion Sort:
>>
>> PUBLIC SUB InsertionSort(matrix AS String[])
>> DIM i, j AS Integer
>> DIM x AS String
>>
>>   FOR i = 1 TO (matrix.Count - 1)
>>     x = matrix[i]
>>     j = i - 1
>>     WHILE j >= 0 AND matrix[j] > x
>>       matrix[j + 1] = matrix[j]
>>       j -= 1
>>     WEND
>>     matrix[j + 1] = x
>>   NEXT
>> END
>>
>> But I get an "Out of bound" error in the WHILE test, because j begins
>> -1.
>>
>> Usually (in other languages this is the behavior) the AND test checks
>> the first condition, and if it is false then it checks the second one.
>> OK... but shouldn't Gambas bypass the WHILE statement because j is
>> negative?
>>
>> --
>> Leonardo Miliani
>> www.leonardomiliani.com
>
> Hi Leonardo. You have to avoid than j can become negative when you use
> it like index on the "matrix" array. So, I think that you can do it,
> modifying the matrix index in the logical test, using the IF()
> function:
>
> WHILE j >= 0 AND matrix[IF(j>0, j, 0)] > x
>
>
> --
> Fabián Flores Vadell
> www.speedbooksargentina.blogspot.com
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
>




More information about the User mailing list