[Newbies] Teaching Smalltalk
Bert Freudenberg
bert at freudenbergs.de
Tue May 4 15:01:38 UTC 2010
On 03.05.2010, at 20:30, David Mitchell wrote:
> Bummed that Why Smalltalk is gone.
Yeah. It's still in the archive though:
http://web.archive.org/web/*/whysmalltalk.com
> Here is my crack at translating. Wouldn't say this is idiomatic Smalltalk (transliterated C never will be). But it ran in the transcript.
>
> Tried to only use ANSI Smalltalk:
>
> | count doors |
> count := 10.
> "Initialize the array of doors to 0 (closed)"
> doors := (Array new: count) atAllPut: false.
>
> "Process the doors"
> 1 to: count do:
> [ :pass |
> pass to: count by: pass do:
> [ :door |
> doors
> at: door
> put: (doors at: door) not ] ].
>
> "Print out the results"
> 1 to: count do:
> [ :n |
> Transcript
> show: 'door #', n, ' is ';
> show: ((doors at: door) ifTrue: [#open] ifFalse: [#closed]);
> cr]
>
This looks a lot like
http://programming.dojo.net.nz/languages/smalltalk/index
(although that code doesn't even run - could someone fix?)
How about this one - demonstrates better what Squeak provides:
| doors |
doors := Array new: 100 withAll: false.
1 to: doors size do: [:pass |
doors := doors collectWithIndex: [ :isOpen :door |
(door isDivisibleBy: pass) xor: isOpen]].
^ (1 to: doors size) select: [:door | doors at: door]
- Bert -
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/beginners/attachments/20100504/77479897/attachment.htm
More information about the Beginners
mailing list