<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Code and Form Course Blog</title>
	<atom:link href="http://golancourses.net/compform/feed/" rel="self" type="application/rss+xml" />
	<link>http://golancourses.net/compform</link>
	<description>Introduction to Computational Visual Form</description>
	<lastBuildDate>Wed, 14 Oct 2009 11:46:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Brightness Tracking to PDF Trace</title>
		<link>http://golancourses.net/compform/2009/10/brightness-tracking-to-pdf-trace/</link>
		<comments>http://golancourses.net/compform/2009/10/brightness-tracking-to-pdf-trace/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 10:54:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://golancourses.net/compform/?p=336</guid>
		<description><![CDATA[// Brightness Tracking + PDF // Combines the Prightness Tracking demo // with the PDF Pause/Record demo. // see http://www.processing.org/reference/libraries/pdf/index.html &#160; import processing.video.*; import processing.pdf.*; &#160; Capture video; boolean recording; PGraphicsPDF pdf; int pBrightestX; int pBrightestY; &#160; &#160; void setup&#40;&#41; &#123; size&#40;640, 480&#41;; // Change size to 320 x 240 if too slow at 640 [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Brightness Tracking + PDF</span>
<span style="color: #666666; font-style: italic;">// Combines the Prightness Tracking demo </span>
<span style="color: #666666; font-style: italic;">// with the PDF Pause/Record demo.</span>
<span style="color: #666666; font-style: italic;">// see http://www.processing.org/reference/libraries/pdf/index.html</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">processing.video.*</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">processing.pdf.*</span><span style="color: #339933;">;</span>
&nbsp;
Capture video<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">boolean</span> recording<span style="color: #339933;">;</span>
PGraphicsPDF pdf<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> pBrightestX<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> pBrightestY<span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  size<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">640</span>, <span style="color: #cc66cc;">480</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Change size to 320 x 240 if too slow at 640 x 480</span>
  <span style="color: #666666; font-style: italic;">// Uses the default video input, see the reference if this causes an error</span>
  video <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Capture<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, width, height, <span style="color: #cc66cc;">30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  noStroke<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  smooth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  recording <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
  pdf <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>PGraphicsPDF<span style="color: #009900;">&#41;</span> createGraphics<span style="color: #009900;">&#40;</span>width, height, PDF, <span style="color: #0000ff;">&quot;pause-resume.pdf&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> draw<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
&nbsp;
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>video.<span style="color: #006633;">available</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    video.<span style="color: #006633;">read</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">//image(video, 0, 0, width, height); // Draw the webcam video onto the screen</span>
    <span style="color: #000066; font-weight: bold;">int</span> brightestX <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// X-coordinate of the brightest video pixel</span>
    <span style="color: #000066; font-weight: bold;">int</span> brightestY <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Y-coordinate of the brightest video pixel</span>
    <span style="color: #000066; font-weight: bold;">float</span> brightestValue <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Brightness of the brightest video pixel</span>
    <span style="color: #666666; font-style: italic;">// Search for the brightest pixel: For each row of pixels in the video image and</span>
    <span style="color: #666666; font-style: italic;">// for each pixel in the yth row, compute each pixel's index in the video</span>
    video.<span style="color: #006633;">loadPixels</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">int</span> index <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> y <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> y <span style="color: #339933;">&lt;</span> video.<span style="color: #006633;">height</span><span style="color: #339933;">;</span> y<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> x <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> x <span style="color: #339933;">&lt;</span> video.<span style="color: #006633;">width</span><span style="color: #339933;">;</span> x<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">// Get the color stored in the pixel</span>
        <span style="color: #000066; font-weight: bold;">int</span> pixelValue <span style="color: #339933;">=</span> video.<span style="color: #006633;">pixels</span><span style="color: #009900;">&#91;</span>index<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">// Determine the brightness of the pixel</span>
        <span style="color: #000066; font-weight: bold;">float</span> pixelBrightness <span style="color: #339933;">=</span> brightness<span style="color: #009900;">&#40;</span>pixelValue<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">// If that value is brighter than any previous, then store the</span>
        <span style="color: #666666; font-style: italic;">// brightness of that pixel, as well as its (x,y) location</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>pixelBrightness <span style="color: #339933;">&gt;</span> brightestValue<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
          brightestValue <span style="color: #339933;">=</span> pixelBrightness<span style="color: #339933;">;</span>
          brightestY <span style="color: #339933;">=</span> y<span style="color: #339933;">;</span>
          brightestX <span style="color: #339933;">=</span> x<span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        index<span style="color: #339933;">++;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #666666; font-style: italic;">// draw a line to trace</span>
    line<span style="color: #009900;">&#40;</span>pBrightestX, pBrightestY, brightestX, brightestY<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    pBrightestX <span style="color: #339933;">=</span> brightestX<span style="color: #339933;">;</span>
    pBrightestY <span style="color: #339933;">=</span> brightestY<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> keyPressed<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>key <span style="color: #339933;">==</span> <span style="color: #0000ff;">'r'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>recording<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      endRecord<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      println<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Recording stopped.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      recording <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
      beginRecord<span style="color: #009900;">&#40;</span>pdf<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      println<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Recording started.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      recording <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>key <span style="color: #339933;">==</span> <span style="color: #0000ff;">'q'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>recording<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      endRecord<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    exit<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>  
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2009/10/brightness-tracking-to-pdf-trace/feed/</wfw:commentRss>
		<slash:comments>566</slash:comments>
		</item>
		<item>
		<title>Contour Traced on Thresholded Video</title>
		<link>http://golancourses.net/compform/2009/10/contour-traced-on-thresholded-video/</link>
		<comments>http://golancourses.net/compform/2009/10/contour-traced-on-thresholded-video/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 10:52:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://golancourses.net/compform/?p=334</guid>
		<description><![CDATA[// Thresholded video image; // Contour traced for the first white blob import processing.video.*; &#160; color black = color&#40;0&#41;; color white = color&#40;255&#41;; int numPixels; Capture video; &#160; int MAX_CHAIN_LEN = 10000; int chainLength = 0; Point2d firstPixel; Point2d chain&#91;&#93;; &#160; void setup&#40;&#41; &#123; size&#40;640, 480&#41;; // Change size to 320 x 240 if too [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Thresholded video image; </span>
<span style="color: #666666; font-style: italic;">// Contour traced for the first white blob</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">processing.video.*</span><span style="color: #339933;">;</span>
&nbsp;
color black <span style="color: #339933;">=</span> color<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
color white <span style="color: #339933;">=</span> color<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> numPixels<span style="color: #339933;">;</span>
Capture video<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> MAX_CHAIN_LEN <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10000</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> chainLength <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
Point2d firstPixel<span style="color: #339933;">;</span>
Point2d chain<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  size<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">640</span>, <span style="color: #cc66cc;">480</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Change size to 320 x 240 if too slow at 640 x 480</span>
  strokeWeight<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">// Uses the default video input, see the reference if this causes an error</span>
  video <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Capture<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, width, height, <span style="color: #cc66cc;">24</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  numPixels <span style="color: #339933;">=</span> video.<span style="color: #006633;">width</span> <span style="color: #339933;">*</span> video.<span style="color: #006633;">height</span><span style="color: #339933;">;</span>
  noCursor<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  smooth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  firstPixel <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Point2d<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  chain <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Point2d<span style="color: #009900;">&#91;</span>MAX_CHAIN_LEN<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>MAX_CHAIN_LEN<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    chain<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Point2d<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>  
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> draw<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>video.<span style="color: #006633;">available</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    video.<span style="color: #006633;">read</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    video.<span style="color: #006633;">loadPixels</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">int</span> threshold <span style="color: #339933;">=</span> <span style="color: #cc66cc;">127</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Set the threshold value</span>
    <span style="color: #000066; font-weight: bold;">float</span> pixelBrightness<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Declare variable to store a pixel's color</span>
    <span style="color: #666666; font-style: italic;">// Turn each pixel in the video frame black or white depending on its brightness</span>
    loadPixels<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> numPixels<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      pixelBrightness <span style="color: #339933;">=</span> brightness<span style="color: #009900;">&#40;</span>video.<span style="color: #006633;">pixels</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>pixelBrightness <span style="color: #339933;">&gt;</span> threshold<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// If the pixel is brighter than the</span>
        pixels<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> white<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// threshold value, make it white</span>
      <span style="color: #009900;">&#125;</span> 
      <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// Otherwise,</span>
        pixels<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> black<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// make it black</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    updatePixels<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
    <span style="color: #666666; font-style: italic;">//-------------------------------------</span>
    <span style="color: #666666; font-style: italic;">// CHAIN CODE (Contour Tracing)</span>
    findFirstPixel<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    chain8 <span style="color: #009900;">&#40;</span>firstPixel.<span style="color: #006633;">x</span>, firstPixel.<span style="color: #006633;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    strokeWeight<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    stroke<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
    noFill<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    beginShape<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>chainLength<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      vertex<span style="color: #009900;">&#40;</span>chain<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">x</span>, chain<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
    <span style="color: #009900;">&#125;</span>
    endShape<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//----------------------------------------------------</span>
<span style="color: #666666; font-style: italic;">// compute chain code to trace edge of a blob.</span>
<span style="color: #666666; font-style: italic;">// this code only traces the first blob found, </span>
<span style="color: #666666; font-style: italic;">// where &quot;first&quot; is defined as &quot;having a pixel with a lower index&quot; (i.e. higher and to the left).</span>
<span style="color: #666666; font-style: italic;">// for multi-blobs, separate code would be needed to label connected blobs first.</span>
<span style="color: #666666; font-style: italic;">// (i.e. &quot;connected component labelling&quot;).</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//===============================================</span>
<span style="color: #000000; font-weight: bold;">class</span> Point2d <span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> x,y<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">//===============================================</span>
<span style="color: #000066; font-weight: bold;">int</span> bri <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> pixval<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// compute the brightness of a pixel, as the average of the R,G,B values.</span>
  <span style="color: #000066; font-weight: bold;">int</span> r <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>pixval <span style="color: #339933;">&amp;</span> 0x00FF0000<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;&gt;</span> <span style="color: #cc66cc;">16</span><span style="color: #339933;">;</span> 
  <span style="color: #000066; font-weight: bold;">int</span> g <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>pixval <span style="color: #339933;">&amp;</span> 0x0000FF00<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;&gt;</span> <span style="color: #cc66cc;">8</span><span style="color: #339933;">;</span> 
  <span style="color: #000066; font-weight: bold;">int</span> b <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>pixval <span style="color: #339933;">&amp;</span> 0x000000FF<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
  <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>r<span style="color: #339933;">+</span>g<span style="color: #339933;">+</span>b<span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">3</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//===============================================</span>
<span style="color: #000066; font-weight: bold;">void</span> findFirstPixel<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// find the first pixel of the first lit blob.</span>
  <span style="color: #000066; font-weight: bold;">boolean</span> foundFirst <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> y<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> y<span style="color: #339933;">&lt;</span>height<span style="color: #339933;">;</span> y<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> x<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> x<span style="color: #339933;">&lt;</span>width<span style="color: #339933;">;</span> x<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #000066; font-weight: bold;">int</span> val <span style="color: #339933;">=</span> pixels<span style="color: #009900;">&#91;</span>y<span style="color: #339933;">*</span>width <span style="color: #339933;">+</span> x<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>foundFirst <span style="color: #339933;">&amp;&amp;</span> bri<span style="color: #009900;">&#40;</span>val<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        firstPixel.<span style="color: #006633;">x</span> <span style="color: #339933;">=</span> x<span style="color: #339933;">;</span>
        firstPixel.<span style="color: #006633;">y</span> <span style="color: #339933;">=</span> y<span style="color: #339933;">;</span>
        foundFirst <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//===============================================</span>
<span style="color: #000066; font-weight: bold;">boolean</span> range <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> n, <span style="color: #000066; font-weight: bold;">int</span> m<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>n <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">||</span> n <span style="color: #339933;">&gt;=</span> width<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>m <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">||</span> m <span style="color: #339933;">&gt;=</span> height<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//===============================================</span>
<span style="color: #666666; font-style: italic;">/*	Compute the chain code of the object beginning at pixel (i,j).
 	Return the code as NN integers in the array C.			*/</span>
<span style="color: #000066; font-weight: bold;">void</span> chain8 <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i, <span style="color: #000066; font-weight: bold;">int</span> j<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> val,n,m,q,r, ii, d, dii<span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span> lastdir, jj<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Table given index offset for each of the 8 directions.	</span>
  <span style="color: #000066; font-weight: bold;">int</span> di<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #cc66cc;">0</span>,<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>,<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>,<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">1</span>                  <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span> dj<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>,<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>,<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">1</span>                  <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>ii<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> ii<span style="color: #339933;">&lt;</span>MAX_CHAIN_LEN<span style="color: #339933;">;</span> ii<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    chain<span style="color: #009900;">&#91;</span>ii<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">x</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    chain<span style="color: #009900;">&#91;</span>ii<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">y</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  val <span style="color: #339933;">=</span> pixels<span style="color: #009900;">&#91;</span>j<span style="color: #339933;">*</span>width<span style="color: #339933;">+</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>	
  chainLength <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
  n <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">/* Initialize for starting pixel */</span>
  q <span style="color: #339933;">=</span> i<span style="color: #339933;">;</span>	
  r <span style="color: #339933;">=</span> j<span style="color: #339933;">;</span>  
  lastdir <span style="color: #339933;">=</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">do</span> <span style="color: #009900;">&#123;</span>
    m <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    dii <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>	
    d <span style="color: #339933;">=</span> <span style="color: #cc66cc;">100</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>ii<span style="color: #339933;">=</span>lastdir<span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> ii<span style="color: #339933;">&lt;</span>lastdir<span style="color: #339933;">+</span><span style="color: #cc66cc;">8</span><span style="color: #339933;">;</span> ii<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 	<span style="color: #666666; font-style: italic;">/* Look for next */</span>
      jj <span style="color: #339933;">=</span> ii<span style="color: #339933;">%</span>8<span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>range<span style="color: #009900;">&#40;</span>di<span style="color: #009900;">&#91;</span>jj<span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span>q, dj<span style="color: #009900;">&#91;</span>jj<span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span>r<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span> pixels<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#40;</span>dj<span style="color: #009900;">&#91;</span>jj<span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span>r<span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span>width <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>di<span style="color: #009900;">&#91;</span>jj<span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span>q<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> val<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
          dii <span style="color: #339933;">=</span> jj<span style="color: #339933;">;</span>	
          m <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
          <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> 
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>m <span style="color: #339933;">!=</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">/* Found the next pixel ... */</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>n<span style="color: #339933;">&lt;</span>MAX_CHAIN_LEN<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        chain<span style="color: #009900;">&#91;</span>n<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">x</span> <span style="color: #339933;">=</span> q<span style="color: #339933;">;</span>
        chain<span style="color: #009900;">&#91;</span>n<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">y</span> <span style="color: #339933;">=</span> r<span style="color: #339933;">;</span>
        n<span style="color: #339933;">++;</span>
      <span style="color: #009900;">&#125;</span>
      q <span style="color: #339933;">+=</span> di<span style="color: #009900;">&#91;</span>dii<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>	
      r <span style="color: #339933;">+=</span> dj<span style="color: #009900;">&#91;</span>dii<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
      lastdir <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>dii<span style="color: #339933;">+</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">%</span>8<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> 
    <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span> 	<span style="color: #666666; font-style: italic;">/* NO next pixel */</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>n<span style="color: #339933;">&gt;</span>MAX_CHAIN_LEN<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> 
  <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span>q<span style="color: #339933;">!=</span>i<span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span>r<span style="color: #339933;">!=</span>j<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 	<span style="color: #666666; font-style: italic;">/* Stop when next to start pixel */</span>
  chainLength <span style="color: #339933;">=</span> n<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2009/10/contour-traced-on-thresholded-video/feed/</wfw:commentRss>
		<slash:comments>1091</slash:comments>
		</item>
		<item>
		<title>Contour (Chain Code) Following</title>
		<link>http://golancourses.net/compform/2009/10/chain-code-following/</link>
		<comments>http://golancourses.net/compform/2009/10/chain-code-following/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 10:47:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://golancourses.net/compform/?p=329</guid>
		<description><![CDATA[// compute chain code to trace edge of a blob. // this code only traces the first blob found, // where &#34;first&#34; is defined as &#34;having a pixel with a lower index&#34; (i.e. higher and to the left). // for multi-blobs, separate code would be needed to label connected blobs first. // (i.e. &#34;connected component [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// compute chain code to trace edge of a blob.</span>
<span style="color: #666666; font-style: italic;">// this code only traces the first blob found, </span>
<span style="color: #666666; font-style: italic;">// where &quot;first&quot; is defined as &quot;having a pixel with a lower index&quot; (i.e. higher and to the left).</span>
<span style="color: #666666; font-style: italic;">// for multi-blobs, separate code would be needed to label connected blobs first.</span>
<span style="color: #666666; font-style: italic;">// (i.e. &quot;connected component labelling&quot;).</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> MAX_CHAIN_LEN <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1000</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> chainLength <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
Point2d firstPixel<span style="color: #339933;">;</span>
Point2d chain<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//===============================================</span>
<span style="color: #000066; font-weight: bold;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  size<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">400</span>,<span style="color: #cc66cc;">400</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  firstPixel <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Point2d<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  chain <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Point2d<span style="color: #009900;">&#91;</span>MAX_CHAIN_LEN<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>MAX_CHAIN_LEN<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    chain<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Point2d<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>  
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//===============================================</span>
<span style="color: #000000; font-weight: bold;">class</span> Point2d <span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> x,y<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">//===============================================</span>
<span style="color: #000066; font-weight: bold;">void</span> draw<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
  background<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  noStroke<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  fill<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  ellipse<span style="color: #009900;">&#40;</span>mouseX,mouseY,<span style="color: #cc66cc;">140</span>,<span style="color: #cc66cc;">150</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
  ellipse<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">230</span>,<span style="color: #cc66cc;">200</span>,<span style="color: #cc66cc;">100</span>,<span style="color: #cc66cc;">70</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
  ellipse<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">280</span>,<span style="color: #cc66cc;">190</span>,<span style="color: #cc66cc;">60</span>,<span style="color: #cc66cc;">120</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  strokeWeight<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  stroke<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
  noFill<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  loadPixels<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  findFirstPixel<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  chain8 <span style="color: #009900;">&#40;</span>firstPixel.<span style="color: #006633;">x</span>, firstPixel.<span style="color: #006633;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  beginShape<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>chainLength<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    vertex<span style="color: #009900;">&#40;</span>chain<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">x</span>, chain<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
  <span style="color: #009900;">&#125;</span>
  endShape<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//===============================================</span>
<span style="color: #000066; font-weight: bold;">int</span> bri <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> pixval<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> r <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>pixval <span style="color: #339933;">&amp;</span> 0x00FF0000<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;&gt;</span> <span style="color: #cc66cc;">16</span><span style="color: #339933;">;</span> 
  <span style="color: #000066; font-weight: bold;">int</span> g <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>pixval <span style="color: #339933;">&amp;</span> 0x0000FF00<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;&gt;</span> <span style="color: #cc66cc;">8</span><span style="color: #339933;">;</span> 
  <span style="color: #000066; font-weight: bold;">int</span> b <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>pixval <span style="color: #339933;">&amp;</span> 0x000000FF<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
  <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>r<span style="color: #339933;">+</span>g<span style="color: #339933;">+</span>b<span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">3</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//===============================================</span>
<span style="color: #000066; font-weight: bold;">void</span> findFirstPixel<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">boolean</span> foundFirst <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> y<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> y<span style="color: #339933;">&lt;</span>height<span style="color: #339933;">;</span> y<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> x<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> x<span style="color: #339933;">&lt;</span>width<span style="color: #339933;">;</span> x<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #000066; font-weight: bold;">int</span> val <span style="color: #339933;">=</span> pixels<span style="color: #009900;">&#91;</span>y<span style="color: #339933;">*</span>width <span style="color: #339933;">+</span> x<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>foundFirst <span style="color: #339933;">&amp;&amp;</span> bri<span style="color: #009900;">&#40;</span>val<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        firstPixel.<span style="color: #006633;">x</span> <span style="color: #339933;">=</span> x<span style="color: #339933;">;</span>
        firstPixel.<span style="color: #006633;">y</span> <span style="color: #339933;">=</span> y<span style="color: #339933;">;</span>
        foundFirst <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//===============================================</span>
<span style="color: #000066; font-weight: bold;">boolean</span> range <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> n, <span style="color: #000066; font-weight: bold;">int</span> m<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>n <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">||</span> n <span style="color: #339933;">&gt;=</span> width<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>m <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">||</span> m <span style="color: #339933;">&gt;=</span> height<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//===============================================</span>
<span style="color: #666666; font-style: italic;">/*	Compute the chain code of the object beginning at pixel (i,j).
 	Return the code as NN integers in the array C.			*/</span>
<span style="color: #000066; font-weight: bold;">void</span> chain8 <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i, <span style="color: #000066; font-weight: bold;">int</span> j<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> val,n,m,q,r, ii, d, dii<span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span> lastdir, jj<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Table given index offset for each of the 8 directions.	</span>
  <span style="color: #000066; font-weight: bold;">int</span> di<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #cc66cc;">0</span>,<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>,<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>,<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">1</span>                  <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span> dj<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>,<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>,<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">1</span>                  <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>ii<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> ii<span style="color: #339933;">&lt;</span>MAX_CHAIN_LEN<span style="color: #339933;">;</span> ii<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    chain<span style="color: #009900;">&#91;</span>ii<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">x</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    chain<span style="color: #009900;">&#91;</span>ii<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">y</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  val <span style="color: #339933;">=</span> pixels<span style="color: #009900;">&#91;</span>j<span style="color: #339933;">*</span>width<span style="color: #339933;">+</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>	
  chainLength <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
  n <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">/* Initialize for starting pixel */</span>
  q <span style="color: #339933;">=</span> i<span style="color: #339933;">;</span>	
  r <span style="color: #339933;">=</span> j<span style="color: #339933;">;</span>  
  lastdir <span style="color: #339933;">=</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">do</span> <span style="color: #009900;">&#123;</span>
    m <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    dii <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>	
    d <span style="color: #339933;">=</span> <span style="color: #cc66cc;">100</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>ii<span style="color: #339933;">=</span>lastdir<span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> ii<span style="color: #339933;">&lt;</span>lastdir<span style="color: #339933;">+</span><span style="color: #cc66cc;">8</span><span style="color: #339933;">;</span> ii<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 	<span style="color: #666666; font-style: italic;">/* Look for next */</span>
      jj <span style="color: #339933;">=</span> ii<span style="color: #339933;">%</span>8<span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>range<span style="color: #009900;">&#40;</span>di<span style="color: #009900;">&#91;</span>jj<span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span>q, dj<span style="color: #009900;">&#91;</span>jj<span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span>r<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span> pixels<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#40;</span>dj<span style="color: #009900;">&#91;</span>jj<span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span>r<span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span>width <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>di<span style="color: #009900;">&#91;</span>jj<span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span>q<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> val<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
          dii <span style="color: #339933;">=</span> jj<span style="color: #339933;">;</span>	
          m <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
          <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> 
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>m <span style="color: #339933;">!=</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">/* Found the next pixel ... */</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>n<span style="color: #339933;">&lt;</span>MAX_CHAIN_LEN<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        chain<span style="color: #009900;">&#91;</span>n<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">x</span> <span style="color: #339933;">=</span> q<span style="color: #339933;">;</span>
        chain<span style="color: #009900;">&#91;</span>n<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">y</span> <span style="color: #339933;">=</span> r<span style="color: #339933;">;</span>
        n<span style="color: #339933;">++;</span>
      <span style="color: #009900;">&#125;</span>
      q <span style="color: #339933;">+=</span> di<span style="color: #009900;">&#91;</span>dii<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>	
      r <span style="color: #339933;">+=</span> dj<span style="color: #009900;">&#91;</span>dii<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
      lastdir <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>dii<span style="color: #339933;">+</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">%</span>8<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> 
    <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span> 	<span style="color: #666666; font-style: italic;">/* NO next pixel */</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>n<span style="color: #339933;">&gt;</span>MAX_CHAIN_LEN<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> 
  <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span>q<span style="color: #339933;">!=</span>i<span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span>r<span style="color: #339933;">!=</span>j<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 	<span style="color: #666666; font-style: italic;">/* Stop when next to start pixel */</span>
  chainLength <span style="color: #339933;">=</span> n<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2009/10/chain-code-following/feed/</wfw:commentRss>
		<slash:comments>820</slash:comments>
		</item>
		<item>
		<title>Handy little programs</title>
		<link>http://golancourses.net/compform/2009/10/handy-little-programs/</link>
		<comments>http://golancourses.net/compform/2009/10/handy-little-programs/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 15:35:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://golancourses.net/compform/?p=326</guid>
		<description><![CDATA[http://www.flong.com/blog/archives/85]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flong.com/blog/archives/85" target="_blank">http://www.flong.com/blog/archives/85</a></p>
]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2009/10/handy-little-programs/feed/</wfw:commentRss>
		<slash:comments>1063</slash:comments>
		</item>
		<item>
		<title>Comparison of color extraction operators</title>
		<link>http://golancourses.net/compform/2009/10/comparison-of-color-extraction-operators/</link>
		<comments>http://golancourses.net/compform/2009/10/comparison-of-color-extraction-operators/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 15:21:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://golancourses.net/compform/?p=324</guid>
		<description><![CDATA[&#160; color C = color &#40;74,213,112,255&#41;; // R,G,B,A &#160; long t0 = millis&#40;&#41;; for &#40;int i=0; i&#60;786432; i++&#41;&#123; int R = &#40;C &#38; 0x00FF0000&#41; &#62;&#62; 16; int G = &#40;C &#38; 0x0000FF00&#41; &#62;&#62; 8; int B = &#40;C &#38; 0x000000FF&#41; ; &#125; println &#40;millis&#40;&#41; - t0&#41;; &#160; long t1 = millis&#40;&#41;; for &#40;int i=0; i&#60;786432; [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">&nbsp;
color C <span style="color: #339933;">=</span> color <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">74</span>,<span style="color: #cc66cc;">213</span>,<span style="color: #cc66cc;">112</span>,<span style="color: #cc66cc;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// R,G,B,A</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">long</span> t0 <span style="color: #339933;">=</span> millis<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">786432</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> R <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>C <span style="color: #339933;">&amp;</span> 0x00FF0000<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;&gt;</span> <span style="color: #cc66cc;">16</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span> G <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>C <span style="color: #339933;">&amp;</span> 0x0000FF00<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;&gt;</span>  <span style="color: #cc66cc;">8</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span> B <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>C <span style="color: #339933;">&amp;</span> 0x000000FF<span style="color: #009900;">&#41;</span>      <span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
println <span style="color: #009900;">&#40;</span>millis<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> t0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">long</span> t1 <span style="color: #339933;">=</span> millis<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">786432</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">float</span> r <span style="color: #339933;">=</span> red<span style="color: #009900;">&#40;</span>C<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">float</span> g <span style="color: #339933;">=</span> green<span style="color: #009900;">&#40;</span>C<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">float</span> b <span style="color: #339933;">=</span> blue<span style="color: #009900;">&#40;</span>C<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
println <span style="color: #009900;">&#40;</span>millis<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> t1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2009/10/comparison-of-color-extraction-operators/feed/</wfw:commentRss>
		<slash:comments>1353</slash:comments>
		</item>
		<item>
		<title>Simple interactive program</title>
		<link>http://golancourses.net/compform/2009/10/simple-interactive-program/</link>
		<comments>http://golancourses.net/compform/2009/10/simple-interactive-program/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 14:49:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://golancourses.net/compform/?p=322</guid>
		<description><![CDATA[void setup&#40;&#41;&#123; size &#40;400,300&#41;; &#125; &#160; void draw &#40;&#41;&#123; background &#40;255,200,200&#41;; smooth &#40;&#41;; strokeWeight &#40;5&#41;; line &#40;200,150, mouseX, mouseY&#41;; &#125;]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  size <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">400</span>,<span style="color: #cc66cc;">300</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> draw <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  background <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">200</span>,<span style="color: #cc66cc;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  smooth <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  strokeWeight <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  line <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">200</span>,<span style="color: #cc66cc;">150</span>, mouseX, mouseY<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2009/10/simple-interactive-program/feed/</wfw:commentRss>
		<slash:comments>358</slash:comments>
		</item>
		<item>
		<title>Cat made of ellipses</title>
		<link>http://golancourses.net/compform/2009/10/cat-made-of-ellipses/</link>
		<comments>http://golancourses.net/compform/2009/10/cat-made-of-ellipses/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 14:48:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://golancourses.net/compform/?p=320</guid>
		<description><![CDATA[PImage cat; void setup&#40;&#41;&#123; size &#40;400,300&#41;; cat = loadImage&#40;&#34;Kitty.jpg&#34;&#41;; &#125; &#160; void draw &#40;&#41;&#123; for &#40;int i=0; i&#60;500; i++&#41;&#123; int rx = &#40;int&#41;random&#40;cat.width&#41;; int ry = &#40;int&#41;random&#40;cat.height&#41;; int index = ry*cat.width + rx; &#160; color C = cat.pixels&#91;index&#93;; float Cr = red &#40;C&#41;; float Cg = green &#40;C&#41;; float Cb = blue &#40;C&#41;; fill &#40;Cr, [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">PImage cat<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  size <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">400</span>,<span style="color: #cc66cc;">300</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cat <span style="color: #339933;">=</span> loadImage<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Kitty.jpg&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> draw <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">500</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">int</span> rx <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span>random<span style="color: #009900;">&#40;</span>cat.<span style="color: #006633;">width</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">int</span> ry <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span>random<span style="color: #009900;">&#40;</span>cat.<span style="color: #006633;">height</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">int</span> index <span style="color: #339933;">=</span> ry<span style="color: #339933;">*</span>cat.<span style="color: #006633;">width</span> <span style="color: #339933;">+</span> rx<span style="color: #339933;">;</span>
&nbsp;
    color C <span style="color: #339933;">=</span> cat.<span style="color: #006633;">pixels</span><span style="color: #009900;">&#91;</span>index<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">float</span> Cr <span style="color: #339933;">=</span> red   <span style="color: #009900;">&#40;</span>C<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">float</span> Cg <span style="color: #339933;">=</span> green <span style="color: #009900;">&#40;</span>C<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">float</span> Cb <span style="color: #339933;">=</span> blue  <span style="color: #009900;">&#40;</span>C<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    fill <span style="color: #009900;">&#40;</span>Cr, Cg, Cb<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
    noStroke<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    ellipse <span style="color: #009900;">&#40;</span>rx,ry, <span style="color: #cc66cc;">15</span>,<span style="color: #cc66cc;">15</span>  <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2009/10/cat-made-of-ellipses/feed/</wfw:commentRss>
		<slash:comments>1445</slash:comments>
		</item>
		<item>
		<title>Cat made of interpolating line colors</title>
		<link>http://golancourses.net/compform/2009/10/cat-made-of-interpolating-line-colors/</link>
		<comments>http://golancourses.net/compform/2009/10/cat-made-of-interpolating-line-colors/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 14:47:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://golancourses.net/compform/?p=318</guid>
		<description><![CDATA[PImage cat; void setup&#40;&#41;&#123; size &#40;400,400,P3D&#41;; cat = loadImage&#40;&#34;Kitty.jpg&#34;&#41;; strokeWeight&#40;3&#41;; &#125; &#160; void draw &#40;&#41;&#123; for &#40;int i=0; i&#60;500; i++&#41;&#123; int rx = &#40;int&#41;random&#40;60, cat.width - 60&#41;; int ry = &#40;int&#41;random&#40;60, cat.height - 60&#41;; int index = ry*cat.width + rx; int sx = rx + &#40;int&#41; random&#40;-60,60&#41;; int sy = ry + &#40;int&#41; random&#40;-60,60&#41;; int [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">PImage cat<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  size <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">400</span>,<span style="color: #cc66cc;">400</span>,P3D<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cat <span style="color: #339933;">=</span> loadImage<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Kitty.jpg&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  strokeWeight<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> draw <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">500</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">int</span> rx <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span>random<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">60</span>, cat.<span style="color: #006633;">width</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">60</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">int</span> ry <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span>random<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">60</span>, cat.<span style="color: #006633;">height</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">60</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">int</span> index <span style="color: #339933;">=</span> ry<span style="color: #339933;">*</span>cat.<span style="color: #006633;">width</span> <span style="color: #339933;">+</span> rx<span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">int</span> sx <span style="color: #339933;">=</span> rx <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span> random<span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">60</span>,<span style="color: #cc66cc;">60</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">int</span> sy <span style="color: #339933;">=</span> ry <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span> random<span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">60</span>,<span style="color: #cc66cc;">60</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">int</span> index2 <span style="color: #339933;">=</span> sy<span style="color: #339933;">*</span>cat.<span style="color: #006633;">width</span> <span style="color: #339933;">+</span> sx<span style="color: #339933;">;</span>
&nbsp;
    color C <span style="color: #339933;">=</span> cat.<span style="color: #006633;">pixels</span><span style="color: #009900;">&#91;</span>index<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">float</span> Cr <span style="color: #339933;">=</span> red   <span style="color: #009900;">&#40;</span>C<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">float</span> Cg <span style="color: #339933;">=</span> green <span style="color: #009900;">&#40;</span>C<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">float</span> Cb <span style="color: #339933;">=</span> blue  <span style="color: #009900;">&#40;</span>C<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
    color D <span style="color: #339933;">=</span> cat.<span style="color: #006633;">pixels</span><span style="color: #009900;">&#91;</span>index2<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">float</span> Dr <span style="color: #339933;">=</span> red   <span style="color: #009900;">&#40;</span>D<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">float</span> Dg <span style="color: #339933;">=</span> green <span style="color: #009900;">&#40;</span>D<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">float</span> Db <span style="color: #339933;">=</span> blue  <span style="color: #009900;">&#40;</span>D<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
&nbsp;
    beginShape<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    stroke<span style="color: #009900;">&#40;</span>Cr,Cg,Cb<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    vertex<span style="color: #009900;">&#40;</span>rx,ry<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    stroke<span style="color: #009900;">&#40;</span>Dr,Dg,Db<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    vertex<span style="color: #009900;">&#40;</span>sx,sy<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    endShape<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2009/10/cat-made-of-interpolating-line-colors/feed/</wfw:commentRss>
		<slash:comments>719</slash:comments>
		</item>
		<item>
		<title>Lines that Interpolate between Colors</title>
		<link>http://golancourses.net/compform/2009/10/lines-that-interpolate-between-colors/</link>
		<comments>http://golancourses.net/compform/2009/10/lines-that-interpolate-between-colors/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 14:43:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://golancourses.net/compform/?p=312</guid>
		<description><![CDATA[size&#40;300,400, P3D&#41;; strokeWeight&#40;10&#41;; &#160; beginShape&#40;&#41;; stroke&#40;255,0,0&#41;; vertex&#40;30,30&#41;; stroke&#40;0,255,0&#41;; vertex&#40;120,180&#41;; endShape&#40;&#41;;]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">size<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">300</span>,<span style="color: #cc66cc;">400</span>, P3D<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
strokeWeight<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
beginShape<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
stroke<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
vertex<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">30</span>,<span style="color: #cc66cc;">30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
stroke<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
vertex<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">120</span>,<span style="color: #cc66cc;">180</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
endShape<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2009/10/lines-that-interpolate-between-colors/feed/</wfw:commentRss>
		<slash:comments>1084</slash:comments>
		</item>
		<item>
		<title>Rotate an array</title>
		<link>http://golancourses.net/compform/2008/12/rotate-an-array/</link>
		<comments>http://golancourses.net/compform/2008/12/rotate-an-array/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 23:42:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.golancourses.net/blog/?p=309</guid>
		<description><![CDATA[&#160; int array&#91;&#93;; array = new int&#91;5&#93;; array&#91;0&#93; = 666; array&#91;1&#93; = 1; array&#91;2&#93; = 2; array&#91;3&#93; = 3; array&#91;4&#93; = 4; &#160; // ROTATE RIGHT int temp = array&#91;array.length-1&#93;; for &#40;int i=&#40;array.length-1&#41;; i&#62;0; i--&#41;&#123; array&#91;i&#93; = array&#91;i-1&#93;; &#125; array&#91;0&#93; = temp; &#160; // ROTATE LEFT int temp = array&#91;0&#93;; for &#40;int i=0; i&#60; &#40;array.length-1&#41; [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> array<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
array <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
array<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">666</span><span style="color: #339933;">;</span>
array<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
array<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
array<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">;</span>
array<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// ROTATE RIGHT</span>
<span style="color: #000066; font-weight: bold;">int</span> temp <span style="color: #339933;">=</span> array<span style="color: #009900;">&#91;</span>array.<span style="color: #006633;">length</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span>array.<span style="color: #006633;">length</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">--</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  array<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> array<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
array<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> temp<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// ROTATE LEFT</span>
<span style="color: #000066; font-weight: bold;">int</span> temp <span style="color: #339933;">=</span> array<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span> <span style="color: #009900;">&#40;</span>array.<span style="color: #006633;">length</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  array<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> array<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
array<span style="color: #009900;">&#91;</span>array.<span style="color: #006633;">length</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> temp<span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2008/12/rotate-an-array/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Complete Working Refrigerator</title>
		<link>http://golancourses.net/compform/2008/12/complete-working-refrigerator/</link>
		<comments>http://golancourses.net/compform/2008/12/complete-working-refrigerator/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 03:20:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.golancourses.net/blog/?p=307</guid>
		<description><![CDATA[// COMPLETE WORKING PROCESSING PROGRAM, // ILLUSTRATING: // -- ARRAY OF OBJECTS // -- MAINTAINING SORTED ORDER OF ARRAY OF OBJECTS // -- SUBCOLLECTIONS &#160; // Global instances of Refrigerator objects: Refrigerator mainFridge; Refrigerator miniFridge; &#160; &#160; void setup&#40;&#41;&#123; size&#40;450, 400&#41;; &#160; // Create the instance of the main Refrigerator object. // The mini Refrigerator [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// COMPLETE WORKING PROCESSING PROGRAM,</span>
<span style="color: #666666; font-style: italic;">// ILLUSTRATING:</span>
<span style="color: #666666; font-style: italic;">// -- ARRAY OF OBJECTS</span>
<span style="color: #666666; font-style: italic;">// -- MAINTAINING SORTED ORDER OF ARRAY OF OBJECTS</span>
<span style="color: #666666; font-style: italic;">// -- SUBCOLLECTIONS</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Global instances of Refrigerator objects:</span>
Refrigerator mainFridge<span style="color: #339933;">;</span>
Refrigerator miniFridge<span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  size<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">450</span>, <span style="color: #cc66cc;">400</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Create the instance of the main Refrigerator object.</span>
  <span style="color: #666666; font-style: italic;">// The mini Refrigerator is null for now.</span>
  <span style="color: #666666; font-style: italic;">// Question for you: where does the miniFridge get created?</span>
  mainFridge <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Refrigerator<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  miniFridge <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> draw<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  background<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">180</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Request the main Refrigerator to draw itself.</span>
  <span style="color: #666666; font-style: italic;">// I have modified the render() method to take location &amp; size.</span>
  mainFridge.<span style="color: #006633;">render</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">50</span>,<span style="color: #cc66cc;">50</span>,<span style="color: #cc66cc;">150</span>,<span style="color: #cc66cc;">300</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Since the mini Refrigerator does not exist at the start</span>
  <span style="color: #666666; font-style: italic;">// of the program, only draw it once it has been created.</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>miniFridge <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    miniFridge.<span style="color: #006633;">render</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">250</span>,<span style="color: #cc66cc;">180</span>,<span style="color: #cc66cc;">150</span>,<span style="color: #cc66cc;">170</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> miniFridgeType <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// just a little hack</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> keyPressed<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">switch</span><span style="color: #009900;">&#40;</span>key<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #0000ff;">'o'</span><span style="color: #339933;">:</span>
    mainFridge.<span style="color: #006633;">openDoor</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #0000ff;">'c'</span><span style="color: #339933;">:</span>
    mainFridge.<span style="color: #006633;">closeDoor</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #0000ff;">'-'</span><span style="color: #339933;">:</span>
    mainFridge.<span style="color: #006633;">removeItem</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #0000ff;">'+'</span><span style="color: #339933;">:</span>
    mainFridge.<span style="color: #006633;">addItem</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #0000ff;">'f'</span><span style="color: #339933;">:</span>
    <span style="color: #666666; font-style: italic;">// When we press the 'f' key,</span>
    <span style="color: #666666; font-style: italic;">// Create the mini-fridge.</span>
    <span style="color: #666666; font-style: italic;">// For this fridge, we ONLY select those foods of a certain &quot;type&quot;</span>
    <span style="color: #666666; font-style: italic;">// (triangle, circle, square).</span>
    miniFridgeType<span style="color: #339933;">++;</span>
    miniFridgeType<span style="color: #339933;">%=</span><span style="color: #cc66cc;">3</span><span style="color: #339933;">;</span>
    miniFridge <span style="color: #339933;">=</span> mainFridge.<span style="color: #006633;">makeSubcollectionRefrigerator</span> <span style="color: #009900;">&#40;</span>miniFridgeType<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #0000ff;">'x'</span><span style="color: #339933;">:</span>
    <span style="color: #666666; font-style: italic;">// When we press the 'x' key,</span>
    <span style="color: #666666; font-style: italic;">// delete whichever item is mouse-selected (in the main fridge),</span>
    <span style="color: #666666; font-style: italic;">// ans shift the remaining items down one position.</span>
    <span style="color: #000066; font-weight: bold;">int</span> indexOfSelectedItem <span style="color: #339933;">=</span> mainFridge.<span style="color: #006633;">getIndexOfSelectedItem</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>indexOfSelectedItem <span style="color: #339933;">!=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      mainFridge.<span style="color: #006633;">removeSpecificItem</span><span style="color: #009900;">&#40;</span>indexOfSelectedItem<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
  <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #0000ff;">'v'</span><span style="color: #339933;">:</span>
    <span style="color: #666666; font-style: italic;">// when we press the 'v' key,</span>
    <span style="color: #666666; font-style: italic;">// insert a new FoodItem into the main fridge.</span>
    <span style="color: #666666; font-style: italic;">// This FoodItem is generated with a random tallness,</span>
    <span style="color: #666666; font-style: italic;">// and it will have to be inserted in the correct position</span>
    <span style="color: #666666; font-style: italic;">// in the array (maintaining sorted order!).</span>
    <span style="color: #666666; font-style: italic;">// All inserted FoodItems are RED, so you can easily spot them.</span>
    <span style="color: #000066; font-weight: bold;">float</span> tallness <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10</span> <span style="color: #339933;">+</span> random<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">35</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    color chroma <span style="color: #339933;">=</span> color<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">int</span>   type <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span>random<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    FoodItem F <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> FoodItem<span style="color: #009900;">&#40;</span>tallness, chroma, type<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    mainFridge.<span style="color: #006633;">insertAndSortNewFoodItem</span> <span style="color: #009900;">&#40;</span>F<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//===============================================</span>
<span style="color: #000000; font-weight: bold;">class</span> Refrigerator <span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// FIELDS</span>
  <span style="color: #000066; font-weight: bold;">int</span>      nFoodItems<span style="color: #339933;">;</span>
  FoodItem foodItems<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">boolean</span>  bDoorOpen<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//---------------------------</span>
  <span style="color: #666666; font-style: italic;">// METHODS</span>
&nbsp;
  Refrigerator<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    bDoorOpen <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    nFoodItems <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">int</span> initialFoodItemArraySize <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span>
    foodItems <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> FoodItem<span style="color: #009900;">&#91;</span>initialFoodItemArraySize<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">// ...individual food items will be created (new'd) when they're added.</span>
    <span style="color: #666666; font-style: italic;">// that's one way to do it.</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//---------------------------</span>
  <span style="color: #000066; font-weight: bold;">void</span> render<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> x, <span style="color: #000066; font-weight: bold;">int</span> y, <span style="color: #000066; font-weight: bold;">int</span> w, <span style="color: #000066; font-weight: bold;">int</span> h<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// IF THE DOOR IS CLOSED, SHOW THE OUTSIDE OF THE FRIDGE.</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>bDoorOpen <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      stroke<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      strokeWeight<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      fill<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">255</span>,<span style="color: #cc66cc;">240</span>,<span style="color: #cc66cc;">230</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      rect<span style="color: #009900;">&#40;</span>x,y,w,h<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      fill<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">180</span>,<span style="color: #cc66cc;">180</span>,<span style="color: #cc66cc;">190</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      rect<span style="color: #009900;">&#40;</span>x<span style="color: #339933;">+</span><span style="color: #cc66cc;">5</span>,y<span style="color: #339933;">+</span>h<span style="color: #339933;">/</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">40</span>,<span style="color: #cc66cc;">5</span>,<span style="color: #cc66cc;">60</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// render silly kid's drawing</span>
      pushMatrix<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      translate<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">50</span>,<span style="color: #cc66cc;">50</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      rotate<span style="color: #009900;">&#40;</span>radians<span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">15.0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      translate<span style="color: #009900;">&#40;</span>x,y<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      fill<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      rect<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">36</span>,<span style="color: #cc66cc;">36</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      smooth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      ellipse<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">18</span>,<span style="color: #cc66cc;">18</span>,<span style="color: #cc66cc;">27</span>,<span style="color: #cc66cc;">27</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      arc<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">18</span>,<span style="color: #cc66cc;">18</span>,<span style="color: #cc66cc;">20</span>,<span style="color: #cc66cc;">20</span>, radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">45</span><span style="color: #009900;">&#41;</span>,radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">135</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      ellipse<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">12</span>,<span style="color: #cc66cc;">14</span>,<span style="color: #cc66cc;">6</span>,<span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      ellipse<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">24</span>,<span style="color: #cc66cc;">14</span>,<span style="color: #cc66cc;">6</span>,<span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      popMatrix<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #666666; font-style: italic;">// BUT IF THE DOOR IS OPEN, SHOW THE STUFF INSIDE.</span>
      stroke<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      strokeWeight<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// Draw the fridge enclosure</span>
      fill<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">200</span>,<span style="color: #cc66cc;">200</span>,<span style="color: #cc66cc;">208</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      rect<span style="color: #009900;">&#40;</span>x,y,w,h<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      fill<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">240</span>,<span style="color: #cc66cc;">240</span>,<span style="color: #cc66cc;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      rect<span style="color: #009900;">&#40;</span>x<span style="color: #339933;">+</span><span style="color: #cc66cc;">5</span>,y<span style="color: #339933;">+</span><span style="color: #cc66cc;">5</span>,w<span style="color: #339933;">-</span><span style="color: #cc66cc;">10</span>,h<span style="color: #339933;">-</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// draw the food items at specified locations.</span>
      <span style="color: #666666; font-style: italic;">// Compute some positions to cleverly position things.</span>
      <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>nFoodItems<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">float</span> foodx <span style="color: #339933;">=</span> x <span style="color: #339933;">+</span> <span style="color: #cc66cc;">25</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">%</span>6<span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">float</span> foody <span style="color: #339933;">=</span> y <span style="color: #339933;">+</span> h <span style="color: #339933;">-</span> <span style="color: #cc66cc;">10</span> <span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">60</span><span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">/</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        foodItems<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">draw</span><span style="color: #009900;">&#40;</span>foodx,foody<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//---------------------------</span>
  <span style="color: #666666; font-style: italic;">// ACCESSOR METHODS</span>
  <span style="color: #000066; font-weight: bold;">boolean</span> isDoorOpen<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> bDoorOpen<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">int</span> getNFoodItems<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> nFoodItems<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// SIMPLE MUTATOR METHODS</span>
  <span style="color: #000066; font-weight: bold;">void</span> closeDoor<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    bDoorOpen <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">void</span> openDoor<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    bDoorOpen <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//---------------------------</span>
  Refrigerator makeSubcollectionRefrigerator <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> subselectionFoodType<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Here, we ask this Refrigerator to create</span>
    <span style="color: #666666; font-style: italic;">// a &quot;subcollection&quot; Refrigerator (such as a cooler or mini-fridge).</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// We know (from its signature) that this method *must*</span>
    <span style="color: #666666; font-style: italic;">// return a Refrigerator. So declare and create this right away!</span>
    <span style="color: #666666; font-style: italic;">// And don't forget to return it at the end of the method.</span>
    Refrigerator outputFridge <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Refrigerator<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Open its door so we can add food to it (ha!)</span>
    outputFridge.<span style="color: #006633;">openDoor</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Search through my foodItems array for items which meet the criterion.</span>
    <span style="color: #666666; font-style: italic;">// Add those items to the outputFridge.</span>
    <span style="color: #666666; font-style: italic;">// (Note that &quot;criterion&quot; in this case means, subselectionFoodType.</span>
    <span style="color: #666666; font-style: italic;">// But the criterion could be measuring a continuous property instead --</span>
    <span style="color: #666666; font-style: italic;">// For example, find me all FoodItems taller than.... etc.)</span>
    <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>nFoodItems<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>foodItems<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">getType</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> subselectionFoodType<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        outputFridge.<span style="color: #006633;">addItem</span><span style="color: #009900;">&#40;</span>foodItems<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Return the outputFridge.</span>
    <span style="color: #000000; font-weight: bold;">return</span> outputFridge<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
  <span style="color: #666666; font-style: italic;">//---------------------------</span>
  <span style="color: #666666; font-style: italic;">// ADDITEM 1: pass in an actual FoodItem object.</span>
  <span style="color: #000066; font-weight: bold;">void</span> addItem <span style="color: #009900;">&#40;</span>FoodItem F<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>bDoorOpen<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      foodItems<span style="color: #009900;">&#91;</span>nFoodItems<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> F<span style="color: #339933;">;</span>
      nFoodItems<span style="color: #339933;">++;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>nFoodItems <span style="color: #339933;">&gt;=</span> foodItems.<span style="color: #006633;">length</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        expandFoodItemArray<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Door must be open to add an item.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
  <span style="color: #666666; font-style: italic;">//---------------------------</span>
  <span style="color: #666666; font-style: italic;">// ADDITEM 2: pass in properties for a new FoodItem to be made from</span>
  <span style="color: #000066; font-weight: bold;">void</span> addItem <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">float</span> tallness, color chroma, <span style="color: #000066; font-weight: bold;">int</span> type<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>bDoorOpen<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      foodItems<span style="color: #009900;">&#91;</span>nFoodItems<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> FoodItem<span style="color: #009900;">&#40;</span>tallness, chroma, type<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      nFoodItems<span style="color: #339933;">++;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>nFoodItems <span style="color: #339933;">&gt;=</span> foodItems.<span style="color: #006633;">length</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        expandFoodItemArray<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Door must be open to add an item.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//---------------------------</span>
  <span style="color: #000066; font-weight: bold;">void</span> addItem<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// ADDITEM 3: pass in nothing (no arguments);</span>
    <span style="color: #666666; font-style: italic;">// Adds a randomly-generated item to the end of the array,</span>
    <span style="color: #666666; font-style: italic;">// expanding the array if necessary (if it gets too full).</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>bDoorOpen<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #666666; font-style: italic;">// If the door is open,</span>
      <span style="color: #666666; font-style: italic;">// generate the properties of a new FoodItem</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// This is code for adding a new fooditem to the end.</span>
      <span style="color: #666666; font-style: italic;">// It makes sure that this new food item is 4 pixels taller than</span>
      <span style="color: #666666; font-style: italic;">// what is currently the last item in the array.</span>
      <span style="color: #000066; font-weight: bold;">float</span> tallness <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>nFoodItems <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        tallness <span style="color: #339933;">=</span> foodItems<span style="color: #009900;">&#91;</span>nFoodItems<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #006633;">getTallness</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">4.0</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// generate a color and food type for</span>
      <span style="color: #666666; font-style: italic;">// what will be the newly added FoodItem</span>
      color chroma <span style="color: #339933;">=</span> color<span style="color: #009900;">&#40;</span>random<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">100</span>,<span style="color: #cc66cc;">255</span><span style="color: #009900;">&#41;</span>, random<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">128</span>,<span style="color: #cc66cc;">255</span><span style="color: #009900;">&#41;</span>, random<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000066; font-weight: bold;">int</span>   type <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span>random<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// .. create and add that FoodItem to the foodItems array.</span>
      foodItems<span style="color: #009900;">&#91;</span>nFoodItems<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> FoodItem<span style="color: #009900;">&#40;</span>tallness, chroma, type<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      nFoodItems<span style="color: #339933;">++;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// Deal with what happens when the user fills up the array.</span>
      <span style="color: #666666; font-style: italic;">// If the number of food items has exceeded the size of the array,</span>
      <span style="color: #666666; font-style: italic;">// Expand the array!</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>nFoodItems <span style="color: #339933;">&gt;=</span> foodItems.<span style="color: #006633;">length</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        expandFoodItemArray<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Door must be open to add an item.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//---------------------------</span>
  <span style="color: #000066; font-weight: bold;">void</span> insertAndSortNewFoodItem <span style="color: #009900;">&#40;</span>FoodItem inputF<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Some FoodItem, inputF, is being &quot;inserted&quot; into the array.</span>
    <span style="color: #666666; font-style: italic;">// We are asked to make sure that we maintain &quot;sorted order&quot;,</span>
    <span style="color: #666666; font-style: italic;">// in this case, of the &quot;tallness&quot; of the foodItems.</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>bDoorOpen<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #666666; font-style: italic;">// Only insert new food if the door is open, right?</span>
      <span style="color: #666666; font-style: italic;">// Now fetch the tallness of the inputF FoodItem.</span>
      <span style="color: #666666; font-style: italic;">// Note the use of the accessor method.</span>
      <span style="color: #000066; font-weight: bold;">float</span> tallnessOfInputF <span style="color: #339933;">=</span> inputF.<span style="color: #006633;">getTallness</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// Search for the index at which to insert this foodItem,</span>
      <span style="color: #666666; font-style: italic;">// to maintain the sorted order of the foodItem array.</span>
      <span style="color: #666666; font-style: italic;">// This could also be accomplished with a while{} loop.</span>
      <span style="color: #000066; font-weight: bold;">int</span> indexAtWhichToInsertInputF <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>nFoodItems<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>foodItems<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">getTallness</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;</span> tallnessOfInputF<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
          indexAtWhichToInsertInputF<span style="color: #339933;">++;</span>
        <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// It's possible we might need to enlarge the size of the array.</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>nFoodItems <span style="color: #339933;">&gt;=</span> foodItems.<span style="color: #006633;">length</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        expandFoodItemArray<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// Shift all elements taller than inputF,</span>
      <span style="color: #666666; font-style: italic;">// one position further down the array.</span>
      <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span>nFoodItems<span style="color: #339933;">;</span> i<span style="color: #339933;">&gt;</span>indexAtWhichToInsertInputF<span style="color: #339933;">;</span> i<span style="color: #339933;">--</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        foodItems<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> foodItems<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// Insert the inputF. Note how simple this is.</span>
      <span style="color: #666666; font-style: italic;">// Then, don't forget to increase the nFoodItems!</span>
      foodItems<span style="color: #009900;">&#91;</span>indexAtWhichToInsertInputF<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> inputF<span style="color: #339933;">;</span>
      nFoodItems<span style="color: #339933;">++;</span>
&nbsp;
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Door must be open to insert an item.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
  <span style="color: #666666; font-style: italic;">//---------------------------</span>
  <span style="color: #000066; font-weight: bold;">void</span> removeItem<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>bDoorOpen<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>nFoodItems <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        nFoodItems<span style="color: #339933;">--;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Door must be open to remove an item&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//---------------------------</span>
  <span style="color: #000066; font-weight: bold;">void</span> removeSpecificItem <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> indexFromWhichToRemoveFoodItem<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// To remove a specific item from the foodItems array,</span>
    <span style="color: #666666; font-style: italic;">// copy all higher-numbered FoodItems down one position in the array.</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>indexFromWhichToRemoveFoodItem <span style="color: #339933;">&gt;=</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span>
        <span style="color: #009900;">&#40;</span>indexFromWhichToRemoveFoodItem <span style="color: #339933;">&lt;</span> nFoodItems<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span>indexFromWhichToRemoveFoodItem<span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>nFoodItems<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        foodItems<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> foodItems<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
      nFoodItems<span style="color: #339933;">--;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//---------------------------</span>
  <span style="color: #000066; font-weight: bold;">int</span> getIndexOfSelectedItem<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Loop over all of my FoodItems,</span>
    <span style="color: #666666; font-style: italic;">// and return the array-index of whichever one</span>
    <span style="color: #666666; font-style: italic;">// reports that the mouse is hovering over it.</span>
    <span style="color: #000066; font-weight: bold;">int</span> output <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>nFoodItems<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>foodItems<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">isMouseHovering</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        output <span style="color: #339933;">=</span> i<span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">return</span> output<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//---------------------------</span>
  <span style="color: #000066; font-weight: bold;">void</span> expandFoodItemArray<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Make a new array (&quot;biggerArray&quot;) which</span>
    <span style="color: #666666; font-style: italic;">// holds twice as much stuff as foodItems.</span>
    FoodItem biggerArray<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> FoodItem<span style="color: #009900;">&#91;</span> foodItems.<span style="color: #006633;">length</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Copy all of our FoodItems into that bigger array.</span>
    <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>foodItems.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      biggerArray<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> foodItems<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Re-assign foodItems to be that bigger array.</span>
    foodItems <span style="color: #339933;">=</span> biggerArray<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">// End of Refrigerator Class.</span>
&nbsp;
&nbsp;
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">//=====================================================</span>
<span style="color: #666666; font-style: italic;">//=====================================================</span>
<span style="color: #000000; font-weight: bold;">class</span> FoodItem <span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">float</span> posx, posy<span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">float</span> tallness<span style="color: #339933;">;</span>
  color chroma<span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span>   type<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//-----------------------------------</span>
  <span style="color: #666666; font-style: italic;">// Constructor for a FoodItem.</span>
  <span style="color: #666666; font-style: italic;">// All necessary variables are passed in.</span>
  FoodItem <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">float</span> tallness, color chroma, <span style="color: #000066; font-weight: bold;">int</span> type<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">tallness</span> <span style="color: #339933;">=</span> tallness<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">chroma</span>   <span style="color: #339933;">=</span> chroma<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">type</span>     <span style="color: #339933;">=</span> type<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//-----------------------------------</span>
  <span style="color: #666666; font-style: italic;">// How a FoodItem should draw itself.</span>
  <span style="color: #666666; font-style: italic;">// Note that a position is passed in.</span>
  <span style="color: #000066; font-weight: bold;">void</span> draw <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">float</span> x, <span style="color: #000066; font-weight: bold;">float</span> y<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    posx <span style="color: #339933;">=</span> x<span style="color: #339933;">;</span>
    posy <span style="color: #339933;">=</span> y<span style="color: #339933;">;</span>
&nbsp;
    smooth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    stroke<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>isMouseHovering<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      strokeWeight<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
      strokeWeight<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    fill<span style="color: #009900;">&#40;</span>chroma<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">switch</span><span style="color: #009900;">&#40;</span>type<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">:</span> <span style="color: #666666; font-style: italic;">// RECT</span>
      rect<span style="color: #009900;">&#40;</span>posx<span style="color: #339933;">-</span><span style="color: #cc66cc;">6</span>,posy<span style="color: #339933;">-</span>tallness, <span style="color: #cc66cc;">12</span>,tallness<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span> <span style="color: #666666; font-style: italic;">// ELLIPSE</span>
      ellipse<span style="color: #009900;">&#40;</span>posx,posy<span style="color: #339933;">-</span>tallness<span style="color: #339933;">/</span><span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">12</span>,tallness<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">:</span> <span style="color: #666666; font-style: italic;">// TRIANGLE</span>
      triangle<span style="color: #009900;">&#40;</span>posx<span style="color: #339933;">-</span><span style="color: #cc66cc;">6</span>,posy, posx<span style="color: #339933;">+</span><span style="color: #cc66cc;">6</span>,posy, posx,posy<span style="color: #339933;">-</span>tallness<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    noSmooth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//-----------------------------------</span>
  <span style="color: #666666; font-style: italic;">// ACCESSOR METHODS.</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">int</span> getType<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> type<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">float</span> getTallness<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> tallness<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">boolean</span> isMouseHovering<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>
    <span style="color: #009900;">&#40;</span>  mouseX <span style="color: #339933;">&gt;</span> posx<span style="color: #339933;">-</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span>
      <span style="color: #009900;">&#40;</span>mouseX <span style="color: #339933;">&lt;</span> posx<span style="color: #339933;">+</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span>
      <span style="color: #009900;">&#40;</span>mouseY <span style="color: #339933;">&lt;</span> posy<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span>
      <span style="color: #009900;">&#40;</span>mouseY <span style="color: #339933;">&gt;</span> posy<span style="color: #339933;">-</span>tallness<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">// End of FoodItem Class.</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2008/12/complete-working-refrigerator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Important End-of-Semester Information</title>
		<link>http://golancourses.net/compform/2008/12/important-end-of-semester-information/</link>
		<comments>http://golancourses.net/compform/2008/12/important-end-of-semester-information/#comments</comments>
		<pubDate>Sat, 06 Dec 2008 23:07:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.golancourses.net/blog/?p=304</guid>
		<description><![CDATA[&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- FINAL EXAM date, time and location: Monday, December 8 Room DH-2210 (Dougherty Hall) 8:30-11:30AM. • Arrive EARLY, like 8:15am!! Students arriving late will not be given extra time. Please arrive 15 minutes before the exam period begins to get to your assigned seat so you can hear the exam instructions completely. • Missing the [...]]]></description>
			<content:encoded><![CDATA[<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
<strong>FINAL EXAM date, time and location:</strong></p>
<div>Monday, December 8<br />
Room DH-2210 (Dougherty Hall)<br />
8:30-11:30AM.</div>
<p>• <strong>Arrive EARLY, like 8:15am</strong>!! Students arriving late will not be given extra time. Please arrive 15 minutes before the exam period begins to get to your assigned seat so you can hear the exam instructions completely.<br />
• <strong>Missing the exam will result in a failing grade for the exam.</strong> If you are ill or have a<br />
family emergency during your exam time, you must have a valid documented excuse and<br />
must speak with your instructor as soon as possible.<br />
• <strong>Bring 2 pencils, erasers, and your student ID card</strong> (or some other government-issued<br />
photo ID) with you. Your ID will be checked at the exam. If you do not bring an ID, you<br />
may be asked to leave the exam room.<br />
• <strong>You may not use electronic devices of any kind during the exam</strong>. This includes, but is<br />
not limited to, cell phones, pagers, calculators, PDAs, computers, music players, etc. It is<br />
better if you do not even bring these items to the exam room in the first place.<br />
• <strong>Please use the restroom before arriving at your exam room</strong>.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
<strong> WHAT TOPICS will be on the final exam?</strong> See these documents:<br />
&#8211; <a href="http://artscool.cfa.cmu.edu/~levin/courses/dmc/intro08/downloads/15100FinalInfoSheetF08.pdf">http://artscool.cfa.cmu.edu/~levin/courses/dmc/intro08/downloads/15100FinalInfoSheetF08.pdf</a><br />
&#8211; <a href="http://www.andrew.cmu.edu/course/15-100mooseNsquirrel/Exam3Overview.pdf" target="_blank">http://www.andrew.cmu.edu/course/15-100mooseNsquirrel/Exam3Overview.pdf</a></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
<strong> FINAL EXPERIMENT PROJECTS and other HOMEWORK</strong><br />
&#8211; Final Experiments are <strong>due 3pm on Friday December 12.</strong> We will have a fun viewing-session/party in room CFA-303 at that time.<br />
&#8211; All unfinished homework assignments should be uploaded by 3pm, Friday 12 December for grading. Missing assignments will not be accepted after that time.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
<strong>UNIVERSITY COURSE ASSESSMENTS:</strong></p>
<p>The University Course <span class="nfakPe">Assessment</span> (UCA) is open for your feedback, through Wednesday of this coming week. I really care about your feedback, and so does the school. I have received an automatic email informing me that 4 of you have still not filled this out &#8212; please take just a minute to fill out the form by going here: Link to the Carnegie Mellon portal at <a href="https://my.cmu.edu/site/main/page.academics" target="_blank">https://my.cmu.edu/site/main/page.academics</a> and click on &#8220;University Course Assessment&#8221; <strong></strong>under &#8220;Courses&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2008/12/important-end-of-semester-information/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notes on INSERTION while maintaining sorted order</title>
		<link>http://golancourses.net/compform/2008/12/notes-on-insertion-while-maintaining-sorted-order/</link>
		<comments>http://golancourses.net/compform/2008/12/notes-on-insertion-while-maintaining-sorted-order/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 03:41:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.golancourses.net/blog/?p=298</guid>
		<description><![CDATA[First, let&#8217;s handle the case for a simple array of INTEGERS: // Insertion into an INTEGER ARRAY while maintaining SORTED ORDER, // and NOT worrying about needing to expand the array size: &#160; // Here's the setup: int integerArray&#91;&#93; = new int&#91;10&#93;; int nData = 4; // we're consuming 4 ints out of 10. integerArray&#91;0&#93; [...]]]></description>
			<content:encoded><![CDATA[<p>First, let&#8217;s handle the case for a simple array of INTEGERS:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Insertion into an INTEGER ARRAY while maintaining SORTED ORDER,</span>
<span style="color: #666666; font-style: italic;">// and NOT worrying about needing to expand the array size:</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Here's the setup:</span>
<span style="color: #000066; font-weight: bold;">int</span> integerArray<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> nData <span style="color: #339933;">=</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// we're consuming 4 ints out of 10.</span>
integerArray<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">;</span>
integerArray<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">5</span><span style="color: #339933;">;</span>
integerArray<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">7</span><span style="color: #339933;">;</span>
integerArray<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">9</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//</span>
<span style="color: #000066; font-weight: bold;">int</span> numberToInsert <span style="color: #339933;">=</span> <span style="color: #cc66cc;">6</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// the number to insert.</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// First, compute the array index at which to insert the number.</span>
<span style="color: #666666; font-style: italic;">// Assume the data in integerArray[] is already sorted!!</span>
<span style="color: #000066; font-weight: bold;">int</span> index <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>index <span style="color: #339933;">&lt;</span> nData<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #009900;">&#40;</span>numberToInsert <span style="color: #339933;">&gt;</span> integerArray<span style="color: #009900;">&#91;</span>index<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  index<span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Now, shift the data above that index, further downstream.</span>
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span>nData<span style="color: #339933;">;</span> i<span style="color: #339933;">&gt;</span>index<span style="color: #339933;">;</span> i<span style="color: #339933;">--</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  integerArray<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> integerArray<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Finally, insert the new number in the right place.</span>
<span style="color: #666666; font-style: italic;">// And don't forget to increment nData.</span>
integerArray<span style="color: #009900;">&#91;</span>index<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> numberToInsert<span style="color: #339933;">;</span>
nData<span style="color: #339933;">++;</span>
<span style="color: #666666; font-style: italic;">//</span>
<span style="color: #666666; font-style: italic;">// NOTE: you *may* have to handle the case</span>
<span style="color: #666666; font-style: italic;">// where nData suddenly exceeds the size of the array...</span></pre></div></div>

<p>Now, here is the same problem, but dealing with inserting an Object into a sorted OBJECT ARRAY.<br />
Note: the use of &#8220;setup()&#8221; is Processing-specific&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">&nbsp;
<span style="color: #666666; font-style: italic;">// Insertion into an OBJECT ARRAY while maintaining SORTED ORDER,</span>
<span style="color: #666666; font-style: italic;">// and NOT worrying about needing to expand the array size:</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Here's the class we'll use for this example:</span>
<span style="color: #000000; font-weight: bold;">class</span> Thing <span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> property<span style="color: #339933;">;</span>
  Thing <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    property <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// initialized to zero</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000066; font-weight: bold;">void</span> setProperty<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> p<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    property <span style="color: #339933;">=</span> p<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000066; font-weight: bold;">int</span> getProperty<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> property<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//-------------------------------------------</span>
<span style="color: #000066; font-weight: bold;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Here's the setup:</span>
  Thing thingArray<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Thing<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span> nData <span style="color: #339933;">=</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// we're consuming 4 Things out of 10.</span>
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>nData<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    thingArray<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Thing<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #666666; font-style: italic;">// Note the use of the accessor method!</span>
  thingArray<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #006633;">setProperty</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  thingArray<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #006633;">setProperty</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  thingArray<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #006633;">setProperty</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  thingArray<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span>.<span style="color: #006633;">setProperty</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">9</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// The Thing to insert:</span>
  Thing thingToInsert <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Thing<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  thingToInsert.<span style="color: #006633;">setProperty</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
  <span style="color: #666666; font-style: italic;">//--------------------------------</span>
  <span style="color: #666666; font-style: italic;">// HERE'S THE INSERTION:</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// First, compute the array index at which to insert the number.</span>
  <span style="color: #666666; font-style: italic;">// Assume the data in integerArray[] is already sorted.</span>
  <span style="color: #000066; font-weight: bold;">int</span> index <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span> propertyOfThingToInsert <span style="color: #339933;">=</span> thingToInsert.<span style="color: #006633;">getProperty</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>index <span style="color: #339933;">&lt;</span> nData<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span>
         <span style="color: #009900;">&#40;</span>propertyOfThingToInsert <span style="color: #339933;">&gt;</span> thingArray<span style="color: #009900;">&#91;</span>index<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">getProperty</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    index<span style="color: #339933;">++;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Now, shift the data above that index further downstream.</span>
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span>nData<span style="color: #339933;">;</span> i<span style="color: #339933;">&gt;</span>index<span style="color: #339933;">;</span> i<span style="color: #339933;">--</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    thingArray<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> thingArray<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Finally, insert the new number in the right place.</span>
  <span style="color: #666666; font-style: italic;">// And don't forget to increment nData.</span>
  thingArray<span style="color: #009900;">&#91;</span>index<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> thingToInsert<span style="color: #339933;">;</span>
  nData<span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2008/12/notes-on-insertion-while-maintaining-sorted-order/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solutions to Moose Exam 2, Problem 5</title>
		<link>http://golancourses.net/compform/2008/12/solutions-to-moose-exam-2-problem-5/</link>
		<comments>http://golancourses.net/compform/2008/12/solutions-to-moose-exam-2-problem-5/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 03:10:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.golancourses.net/blog/?p=296</guid>
		<description><![CDATA[Executing the code, int dList&#91;&#93; = &#123;3, 2, 2, 5, 1, 7, 4, 6, 0&#125;; char charList&#91;&#93; = &#123;'C',' ','O','G','U','D','K','L'&#125;; &#160; for &#40; int i = 0; i &#60; dList.length; i++&#41;&#123; System.out.print&#40; charList&#91; dList&#91; i &#93; &#93; &#41;; &#125; System.out.println&#40; &#41;; we learn that the answer is: GOOD LUKC pretty mean!]]></description>
			<content:encoded><![CDATA[<p>Executing the code,</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span> dList<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">5</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">7</span>, <span style="color: #cc66cc;">4</span>, <span style="color: #cc66cc;">6</span>, <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">char</span> charList<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #0000ff;">'C'</span>,<span style="color: #0000ff;">' '</span>,<span style="color: #0000ff;">'O'</span>,<span style="color: #0000ff;">'G'</span>,<span style="color: #0000ff;">'U'</span>,<span style="color: #0000ff;">'D'</span>,<span style="color: #0000ff;">'K'</span>,<span style="color: #0000ff;">'L'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> dList.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">print</span><span style="color: #009900;">&#40;</span> charList<span style="color: #009900;">&#91;</span> dList<span style="color: #009900;">&#91;</span> i <span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>we learn that the answer is:<br />
<b>GOOD LUKC</b><br />
pretty mean!</p>
]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2008/12/solutions-to-moose-exam-2-problem-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solutions to Moose Exam 2, Questions 3 &amp; 4</title>
		<link>http://golancourses.net/compform/2008/12/solutions-to-moose-exam-2-questions-3-4/</link>
		<comments>http://golancourses.net/compform/2008/12/solutions-to-moose-exam-2-questions-3-4/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 03:05:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.golancourses.net/blog/?p=291</guid>
		<description><![CDATA[Question 3. public int search&#40; char letter &#41;&#123; int indexOfSecondOccurrence = -1; &#160; int foundCount = 0; int nData = dList.length; for &#40;int i=0; i&#60;nData; i++&#41;&#123; // Note use of getLetter() accessor method!!!: if &#40;dList&#91;i&#93;.getLetter&#40;&#41; == letter&#41;&#123; foundCount++; if &#40;foundCount == 2&#41;&#123; indexOfSecondOccurrence = i; &#125; &#125; &#125; &#160; return indexOfSecondOccurrence; &#125; &#160; // Note [...]]]></description>
			<content:encoded><![CDATA[<p>Question 3.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> search<span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">char</span> letter <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> indexOfSecondOccurrence <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">int</span> foundCount <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span> nData <span style="color: #339933;">=</span> dList.<span style="color: #006633;">length</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>nData<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Note use of getLetter() accessor method!!!:</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>dList<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">getLetter</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> letter<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      foundCount<span style="color: #339933;">++;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>foundCount <span style="color: #339933;">==</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        indexOfSecondOccurrence <span style="color: #339933;">=</span> i<span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">return</span> indexOfSecondOccurrence<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Note that this function will return -1</span>
  <span style="color: #666666; font-style: italic;">// for the &quot;indexOfSecondOccurrence&quot; when the input data</span>
  <span style="color: #666666; font-style: italic;">// does not contain 2 occurrences. This is customary.</span>
  <span style="color: #666666; font-style: italic;">// It's a reasonable answer, since this method *must*</span>
  <span style="color: #666666; font-style: italic;">// return an integer.</span></pre></div></div>

<p>QUESTION 4:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">void</span> insert <span style="color: #009900;">&#40;</span>Data D<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// assume the global variable &quot;nData&quot; stores the</span>
  <span style="color: #666666; font-style: italic;">// number of valid references in the global dList array.</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Special case if there are no elements already in the dList array,</span>
  <span style="color: #666666; font-style: italic;">// since then we couldn't compare the incoming D with the 0th element!</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>nData <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    dList<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> D<span style="color: #339933;">;</span>
    nData<span style="color: #339933;">++;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">int</span> numberFieldOfZerothElement <span style="color: #339933;">=</span> dList<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #006633;">getNumber</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>D.<span style="color: #006633;">getNumber</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;</span> numberFieldOfZerothElement<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #666666; font-style: italic;">// copy elements higher than the 0th position, one position down.</span>
      <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span>nData<span style="color: #339933;">;</span> i<span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">--</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        dList<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> dList<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// insert D at the 0th position</span>
      dList<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> D<span style="color: #339933;">;</span>
      nData<span style="color: #339933;">++;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
      dList<span style="color: #009900;">&#91;</span>nData<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> D<span style="color: #339933;">;</span>
      nData<span style="color: #339933;">++;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Now expand the array if it has become full on the</span>
  <span style="color: #666666; font-style: italic;">// previous round of insertion. Needing to expand the array</span>
  <span style="color: #666666; font-style: italic;">// is an annoying consequence of the way the problem is formulated,</span>
  <span style="color: #666666; font-style: italic;">// since we (A) are told to deal with the case when the array is full,</span>
  <span style="color: #666666; font-style: italic;">// and (B) are expressly told that we must never lose data.</span>
  <span style="color: #666666; font-style: italic;">//</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>nData <span style="color: #339933;">&gt;=</span> dList.<span style="color: #006633;">length</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// a good guess for a new size is twice the previous size.</span>
    <span style="color: #000066; font-weight: bold;">int</span> newMaximumSize <span style="color: #339933;">=</span> dList.<span style="color: #006633;">length</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
    Data biggerDList<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Data<span style="color: #009900;">&#91;</span>newMaximumSize<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>nData<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      biggerDList<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> dList<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    dList <span style="color: #339933;">=</span> biggerDList<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2008/12/solutions-to-moose-exam-2-questions-3-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solutions to Moose Exam 2, Questions 1 &amp; 2</title>
		<link>http://golancourses.net/compform/2008/12/solutions-to-moose-exam-2-questions-1-2/</link>
		<comments>http://golancourses.net/compform/2008/12/solutions-to-moose-exam-2-questions-1-2/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 02:11:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.golancourses.net/blog/?p=286</guid>
		<description><![CDATA[Question 1. public class Question1 &#123; // fields int dList&#91;&#93;; &#160; // constructor public Question1&#40; &#41;&#123; dList = new int&#91;7&#93;; for &#40;int i=0; i&#60;7; i++&#41;&#123; dList&#91;i&#93; = &#40;i+1&#41;; &#125; &#125; &#125; OR public class Question1 &#123; // fields int dList&#91;&#93; = &#123;1,2,3,4,5,6,7&#125;; &#160; // constructor public Question1&#40; &#41;&#123; &#125; &#125; Question 2: void printGreaterThanSumOfBothNeighbors&#40; int [...]]]></description>
			<content:encoded><![CDATA[<p>Question 1.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Question1
<span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// fields</span>
  <span style="color: #000066; font-weight: bold;">int</span> dList<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// constructor</span>
  <span style="color: #000000; font-weight: bold;">public</span> Question1<span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    dList <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">7</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">7</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      dList<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>OR</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Question1
<span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// fields</span>
  <span style="color: #000066; font-weight: bold;">int</span> dList<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">4</span>,<span style="color: #cc66cc;">5</span>,<span style="color: #cc66cc;">6</span>,<span style="color: #cc66cc;">7</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// constructor</span>
  <span style="color: #000000; font-weight: bold;">public</span> Question1<span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Question 2:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">  <span style="color: #000066; font-weight: bold;">void</span> printGreaterThanSumOfBothNeighbors<span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">int</span> intList<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">int</span> n <span style="color: #339933;">=</span> intList.<span style="color: #006633;">length</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>n <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #000066; font-weight: bold;">boolean</span> bFoundOne <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span><span style="color: #009900;">&#40;</span>n<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">int</span> neighborLeft  <span style="color: #339933;">=</span> intList<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">int</span> neighborRight <span style="color: #339933;">=</span> intList<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">int</span> sumOfBothNeighbors <span style="color: #339933;">=</span> neighborLeft <span style="color: #339933;">+</span> neighborRight<span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>intList<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&gt;</span> sumOfBothNeighbors<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
          bFoundOne <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
          <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Value #&quot;</span> <span style="color: #339933;">+</span> i <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;, &quot;</span> <span style="color: #339933;">+</span> intList<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span>
            <span style="color: #0000ff;">&quot;, is greater than the sum of its neighbors.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
&nbsp;
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>bFoundOne <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Test failed, so nothing was printed.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Array too short to be tested.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2008/12/solutions-to-moose-exam-2-questions-1-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A basic template for a class definition</title>
		<link>http://golancourses.net/compform/2008/12/a-basic-template-for-a-class-definition/</link>
		<comments>http://golancourses.net/compform/2008/12/a-basic-template-for-a-class-definition/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 01:56:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.golancourses.net/blog/?p=206</guid>
		<description><![CDATA[(This was a draft which I accidentally neglected to publish on November 3rd. I think the election distracted me!) Generally speaking, a class definition will have: Fields (data of various kinds, potentially including other objects) Methods (functions): Constructor methods Accessor (getter) methods Mutator (setter) methods IceCreamCone yum; &#160; void setup&#40;&#41;&#123; yum = new IceCreamCone&#40;2, &#34;Chocolate&#34;&#41;; [...]]]></description>
			<content:encoded><![CDATA[<p>(This was a draft which I accidentally neglected to publish on November 3rd. I think the election distracted me!) <br />
Generally speaking, a class definition will have:</p>
<ul>
<li>Fields (data of various kinds, potentially including other objects)
<li>Methods (functions):
<ul>
<li>Constructor methods
<li>Accessor (getter) methods
<li>Mutator (setter) methods
</ul>
</ul>
<p></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">IceCreamCone yum<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  yum <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> IceCreamCone<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span>, <span style="color: #0000ff;">&quot;Chocolate&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  yum.<span style="color: #006633;">setNScoops</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">// The right way: Use a mutator!</span>
&nbsp;
  yum.<span style="color: #006633;">nScoops</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">// The less polite way: direct access to the object's field.</span>
  <span style="color: #666666; font-style: italic;">// This &quot;could&quot; throw an error if nScoops had been declared &quot;private&quot;;</span>
  <span style="color: #666666; font-style: italic;">// Processing lets you do this for complex reasons...</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">//==================================</span>
<span style="color: #000000; font-weight: bold;">class</span> IceCreamCone <span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// FIELDS</span>
  <span style="color: #000066; font-weight: bold;">int</span> nScoops<span style="color: #339933;">;</span>
  <span style="color: #003399;">String</span> flavor<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//-----------------------</span>
  <span style="color: #666666; font-style: italic;">// METHODS</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// accessors</span>
  <span style="color: #000066; font-weight: bold;">int</span> getNScoops<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> nScoops<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #003399;">String</span> getFlavor<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> flavor<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// mutators</span>
  <span style="color: #000066; font-weight: bold;">void</span> setNScoops<span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">int</span> n<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    nScoops <span style="color: #339933;">=</span> n<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">void</span> addAnotherScoop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    nScoops<span style="color: #339933;">++;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// constructors</span>
  IceCreamCone <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> n, <span style="color: #003399;">String</span> f<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    nScoops <span style="color: #339933;">=</span> n<span style="color: #339933;">;</span>
    flavor <span style="color: #339933;">=</span> f<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  IceCreamCone <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    nScoops <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    flavor <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2008/12/a-basic-template-for-a-class-definition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Object &amp; Class REVIEW</title>
		<link>http://golancourses.net/compform/2008/12/object-class-review/</link>
		<comments>http://golancourses.net/compform/2008/12/object-class-review/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 01:35:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.golancourses.net/blog/?p=274</guid>
		<description><![CDATA[Here&#8217;s a definition block for a class of Objects called &#8220;Thing&#8221;. class Thing &#123; int property; Thing&#40;&#41;&#123; property = &#40;int&#41;random&#40;100&#41;; &#125; &#125; Declaring, allocating memory for, and initializing a single Object: Thing someThing; someThing = new Thing&#40;&#41;; Copying the data from one Object into a new Object, in order to make a duplicate. This is [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a definition block for a class of Objects called &#8220;Thing&#8221;.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Thing <span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> property<span style="color: #339933;">;</span>
  Thing<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    property <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span>random<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Declaring, allocating memory for, and initializing a single Object:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Thing someThing<span style="color: #339933;">;</span>
someThing <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Thing<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Copying the data from one Object into a new Object, in order to make a duplicate.<br />
This is the least elegant way of doing this, since you need to reach inside an Object from outside in order to copy all of its fields:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Thing T2 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Thing<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
T2.<span style="color: #006633;">property</span> <span style="color: #339933;">=</span> someThing.<span style="color: #006633;">property</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// repeat for all properties of a Thing....</span></pre></div></div>

<p>Another way to create a duplicate Object is to make a &#8220;copy constructor&#8221;. Here, a Thing called someThing is used to make a new Thing.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Thing T2 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Thing <span style="color: #009900;">&#40;</span>someThing<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Thing <span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> property<span style="color: #339933;">;</span>
&nbsp;
  Thing<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    property <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span>random<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// COPY CONSTRUCTOR:</span>
  <span style="color: #666666; font-style: italic;">// This constructor for class Thing</span>
  <span style="color: #666666; font-style: italic;">// copies the data from another Thing</span>
  Thing <span style="color: #009900;">&#40;</span>Thing thingToCopyFrom<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    property <span style="color: #339933;">=</span> thingToCopyFrom.<span style="color: #006633;">property</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">// OR: this.property = thingToCopyFrom.property;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>A third way to create a duplicate object is to make a &#8220;factory method&#8221;. In this example, class Thing is extended yet again, this time to contain a factory method for producing duplicate Things. When it&#8217;s employed correctly, you can ask a specific Thing to give you a copy of itself.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Thing T2 <span style="color: #339933;">=</span> someThing.<span style="color: #006633;">getCopy</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Thing <span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> property<span style="color: #339933;">;</span>
&nbsp;
  Thing<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    property <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span>random<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  Thing <span style="color: #009900;">&#40;</span>Thing thingToCopyFrom<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    property <span style="color: #339933;">=</span> thingToCopyFrom.<span style="color: #006633;">property</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// FACTORY METHOD:</span>
  Thing getCopy<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    Thing T <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Thing<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    T.<span style="color: #006633;">property</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">property</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">return</span> T<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Declaring, allocating memory for, and initializing an array of Objects</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span> nThings <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// a helpful variable</span>
Thing thingArray<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// declaration of an array</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// allocation of memory for the array</span>
<span style="color: #666666; font-style: italic;">// (but not the objects themselves)</span>
<span style="color: #666666; font-style: italic;">// -- only their placeholder spots.</span>
thingArray <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Thing<span style="color: #009900;">&#91;</span>nThings<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>nThings<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  thingArray<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Thing<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// create each object</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>A common pattern: an array which is only partially used. Memory for all of the objects (maxNThings) has been allocated, but you&#8217;re only drawing a certain subset of them (nThings).</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// A common pattern is to maintain 2 numbers:</span>
<span style="color: #666666; font-style: italic;">// (1) The total size of the array -- all of the allocated memory;</span>
<span style="color: #666666; font-style: italic;">// (2) The number of elements in the array you're actually using.</span>
<span style="color: #666666; font-style: italic;">//</span>
<span style="color: #666666; font-style: italic;">// It is assumed that you are &quot;using&quot; a contigouous block</span>
<span style="color: #666666; font-style: italic;">// of the lowest-numbered elements in the array, e.g. 0 through 7, etc.</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> nThings <span style="color: #339933;">=</span> <span style="color: #cc66cc;">7</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// a helpful variable</span>
<span style="color: #000066; font-weight: bold;">int</span> maxNThings <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// a helpful variable</span>
&nbsp;
Thing thingArray<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// declaration of an array</span>
thingArray <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Thing<span style="color: #009900;">&#91;</span>maxNThings<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>maxNThings<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  thingArray<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Thing<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// creating each object</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Adding a new element to the end of an array, assuming the array has room allocated for it.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Adding a new element to the end of an array,</span>
<span style="color: #666666; font-style: italic;">// assuming the array has room allocated for it.</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>nThings <span style="color: #339933;">&lt;</span> maxNThings<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  thingArray<span style="color: #009900;">&#91;</span>nThings<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Thing<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  nThings<span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>How to insert a new Object into the MIDDLE of an array, moving the higher-numbered items further down the array.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">  Thing thingToInsert <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Thing<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span> indexToInsertItAt <span style="color: #339933;">=</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>indexToInsertItAt <span style="color: #339933;">&lt;</span> maxNThings<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// First, move the other elements further down the array.</span>
    <span style="color: #666666; font-style: italic;">// note that this effectively loses/destroys the data</span>
    <span style="color: #666666; font-style: italic;">// previously stored in the last element in the array.</span>
    <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span>maxNThings<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&gt;</span>indexToInsertItAt<span style="color: #339933;">;</span> i<span style="color: #339933;">--</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      thingArray<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> thingArray<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #666666; font-style: italic;">// now, insert the new Thing.</span>
    thingArray<span style="color: #009900;">&#91;</span>indexToInsertItAt<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> thingToInsert<span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">// update the nThings.</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>nThings <span style="color: #339933;">&lt;</span> maxNThings<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      nThings<span style="color: #339933;">++;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">  <span style="color: #000066; font-weight: bold;">int</span> indexToRemoveThingFrom <span style="color: #339933;">=</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>indexToRemoveThingFrom <span style="color: #339933;">&lt;</span> nThings<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// copy the higher-numbered items down into lower-numbered slots.</span>
    <span style="color: #666666; font-style: italic;">// this has the effect of clobbering the Thing at indexToRemoveThingFrom.</span>
    <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span>indexToRemoveThingFrom<span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span><span style="color: #009900;">&#40;</span>nThings<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
       thingArray<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> thingArray<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>nThings <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    nThings<span style="color: #339933;">--;</span>
  <span style="color: #009900;">&#125;</span></pre></div></div>

<p>Instead of re-numbering Objects in an array, moving around Objects in an array can also be achieved with a copy function (like the one I described above). There are some subtle differences in using this technique, which are less evident in Java and much more significant in C++; don&#8217;t worry about this for now.</p>
]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2008/12/object-class-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>University Course Assessments&#8230;</title>
		<link>http://golancourses.net/compform/2008/12/university-course-assessments/</link>
		<comments>http://golancourses.net/compform/2008/12/university-course-assessments/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 02:58:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.golancourses.net/blog/?p=269</guid>
		<description><![CDATA[Dear Students, The University Course Assessment (UCA) is now open for Fall courses. I really care about your feedback, and so does the school. Please take a few minutes to fill out the form by going here: Link to the Carnegie Mellon portal at https://my.cmu.edu/site/main/page.academics and click on University Course Assessment under Courses. Regards, Golan]]></description>
			<content:encoded><![CDATA[<p>Dear Students,<br />
The University Course <span class="nfakPe">Assessment</span> (UCA) is now open for Fall courses. I really care about your feedback, and so does the school. Please take a few minutes to fill out the form by going here:</p>
<div>Link to the Carnegie Mellon portal at <a href="https://my.cmu.edu/site/main/page.academics" target="_blank">https://my.cmu.edu/site/main/page.academics</a></div>
<div>and click on <strong>University Course <span class="nfakPe">Assessment</span></strong> under Courses.</div>
<div>Regards,</div>
<div>Golan</div>
]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2008/12/university-course-assessments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Factory Methods!</title>
		<link>http://golancourses.net/compform/2008/12/factory-methods/</link>
		<comments>http://golancourses.net/compform/2008/12/factory-methods/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 16:32:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.golancourses.net/blog/?p=267</guid>
		<description><![CDATA[&#160; void setup&#40;&#41;&#123; Thing T1 = new Thing&#40;1&#41;; Thing T2 = T1.getBiggerThing&#40;&#41;; Thing T2prime = T2.getVerySimilarThing&#40;&#41;; &#160; &#160; Thing T1duplicate = new Thing&#40;T1&#41;; println&#40;&#34;The property of T1duplicate = &#34; + T1duplicate.property&#41;; &#125; &#160; &#160; class Thing &#123; int property; &#160; //constructor Thing &#40;int p&#41;&#123; property = p; &#125; &#160; //copy constructor Thing &#40;Thing originalThing&#41;&#123; this.property [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  Thing T1 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Thing<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  Thing T2 <span style="color: #339933;">=</span> T1.<span style="color: #006633;">getBiggerThing</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  Thing T2prime <span style="color: #339933;">=</span> T2.<span style="color: #006633;">getVerySimilarThing</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
  Thing T1duplicate <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Thing<span style="color: #009900;">&#40;</span>T1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  println<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;The property of T1duplicate = &quot;</span> <span style="color: #339933;">+</span> T1duplicate.<span style="color: #006633;">property</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Thing <span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> property<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//constructor</span>
  Thing <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> p<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    property <span style="color: #339933;">=</span> p<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//copy constructor</span>
  Thing <span style="color: #009900;">&#40;</span>Thing originalThing<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">property</span> <span style="color: #339933;">=</span> originalThing.<span style="color: #006633;">property</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// factory method</span>
  Thing getVerySimilarThing<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">new</span> Thing<span style="color: #009900;">&#40;</span>property<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// factory method</span>
  Thing getBiggerThing<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">new</span> Thing<span style="color: #009900;">&#40;</span>property<span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2008/12/factory-methods/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>15-100 Final Exam info-sheet released</title>
		<link>http://golancourses.net/compform/2008/12/15-100-final-exam-info-sheet-released/</link>
		<comments>http://golancourses.net/compform/2008/12/15-100-final-exam-info-sheet-released/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 07:24:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.golancourses.net/blog/?p=264</guid>
		<description><![CDATA[Dear Students, The 15-100 exam committee has released the following information sheet for you. Please use this as a study guide for the exam: http://artscool.cfa.cmu.edu:16080/~levin/courses/dmc/intro08/downloads/15100FinalInfoSheetF08.pdf]]></description>
			<content:encoded><![CDATA[<p>Dear Students,<br />
The 15-100 exam committee has released the following information sheet for you. Please use this as a study guide for the exam: <a href="http://artscool.cfa.cmu.edu:16080/~levin/courses/dmc/intro08/downloads/15100FinalInfoSheetF08.pdf" target="_blank">http://artscool.cfa.cmu.edu:16080/~levin/courses/dmc/intro08/downloads/15100FinalInfoSheetF08.pdf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2008/12/15-100-final-exam-info-sheet-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Another reminder about using classes and their APIs</title>
		<link>http://golancourses.net/compform/2008/11/another-reminder-about-using-classes-and-their-apis/</link>
		<comments>http://golancourses.net/compform/2008/11/another-reminder-about-using-classes-and-their-apis/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 05:35:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.golancourses.net/blog/?p=259</guid>
		<description><![CDATA[If you&#8217;re given an API for a class, you must assume that this is the only information you have about that class. Don&#8217;t go making any guesses about the names of hypothetical internal variables in the class! For example: If the only thing you&#8217;re told about the API for the Refrigerator class is that it [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re given an API for a class, <em>you must assume</em> that this is the only information you have about that class. Don&#8217;t go making any guesses about the names of hypothetical internal variables in the class! For example: If the <em>only thing</em> you&#8217;re told about the API for the Refrigerator class is that it supports the following functions:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span> getNumberOfFoodItems<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>...<span style="color: #009900;">&#125;</span>
<span style="color: #000066; font-weight: bold;">void</span> addFoodItem <span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> foodName<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>...<span style="color: #009900;">&#125;</span></pre></div></div>

<p>&#8230; then you <em>cannot</em> assume that the Refrigerator has an integer field called nFoodItems, or an array called foodItemArray, or any such thing! If you are asked to write code to perform operations on a Refrigerator which depend on or modify its number of food items, you must do so using only the functions provided.</p>
]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2008/11/another-reminder-about-using-classes-and-their-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No trick questions: stuff to consider</title>
		<link>http://golancourses.net/compform/2008/11/no-trick-questions-stuff-to-consider/</link>
		<comments>http://golancourses.net/compform/2008/11/no-trick-questions-stuff-to-consider/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 05:26:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.golancourses.net/blog/?p=257</guid>
		<description><![CDATA[Why does the following code produce an error? Answer: Array index out of bounds exception happens (-1) when the counter is zero. // Assume there already exists some int array[]. // int x = 0; for &#40;int i=0; i&#60;array.length; i++&#41;&#123; int delta = array&#91;i&#93; - array&#91;i-1&#93;; x = x + delta; &#125; System.out.println&#40;x&#41;; Why does [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Why does the following code produce an error?</strong><br />
Answer: Array index out of bounds exception happens (-1) when the counter is zero.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Assume there already exists some int array[].</span>
<span style="color: #666666; font-style: italic;">//</span>
<span style="color: #000066; font-weight: bold;">int</span> x <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>array.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> delta <span style="color: #339933;">=</span> array<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">-</span> array<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  x <span style="color: #339933;">=</span> x <span style="color: #339933;">+</span> delta<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><strong>Why does the following code produce an error?</strong><br />
Answer: Null pointer exception, because you forgot to &#8220;new&#8221; the Car. The Car doesn&#8217;t exist when you ask it to drive. In other words, you&#8217;re invoking the drive method on a null instance of a Car.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Assume there already exists some class,</span>
<span style="color: #666666; font-style: italic;">// called Car, which implements a drive() method.</span>
<span style="color: #666666; font-style: italic;">//</span>
Car myCar<span style="color: #339933;">;</span>
myCar.<span style="color: #006633;">drive</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><strong>Why does the following code produce an error?</strong><br />
Answer: same error, actually, except this time, it&#8217;s because you forgot to &#8220;new&#8221; each element of the kennel[] array. When working with an array of objects, you have to (A) allocate memory for the array, but also (B) allocate memory for each element of the array!</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Dog kennel<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Dog<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  kennel<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">ageInYears</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span>random<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">20</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong><br />
Why does the following code produce an error?</strong><br />
Answer: attempt to convert a float (5/7.0) into an integer, which is a potentially information-losing request. You would need a &#8220;casting&#8221; operation to do it properly, e.g. int x = (int)(5/7.0); note that casting is not required in the other direction.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span> x <span style="color: #339933;">=</span> <span style="color: #cc66cc;">5</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">7.0</span><span style="color: #339933;">;</span></pre></div></div>

<p><strong>Why does the following code produce an error?</strong><br />
Answer: Divide by Zero error when i == 0.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span> array<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">5</span>,<span style="color: #cc66cc;">7</span>,<span style="color: #cc66cc;">9</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>array.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> x <span style="color: #339933;">=</span> array<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">/</span>i<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>The following code was intended to &#8220;rotate&#8221; the data in an array.<br />
Why does it fail to do this, and what happens instead?</strong><br />
Answer: if you work through the code, you&#8217;ll see that it clobbers your array with all 3&#8242;s.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span> array<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">5</span>,<span style="color: #cc66cc;">7</span>,<span style="color: #cc66cc;">9</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>array.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  array<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> array<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>What&#8217;s wrong with the following class declaration?</strong><br />
Answer: there should be no parentheses in the first line of a class declaration. This is a very subtle problem, but I&#8217;m showing this to you because I saw several of you make this error.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Dog<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> ageInYears<span style="color: #339933;">;</span>
&nbsp;
  Dog<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> a<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    ageInYears <span style="color: #339933;">=</span> a<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>What&#8217;s wrong with the following function?</strong><br />
Answer: there&#8217;s no return value, even though an integer is specified in the method&#8217;s signature! Println is <em>absolutely not</em> the same thing as &#8220;returning a value&#8221;.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Assume there is a correctly-defined Dog class.</span>
<span style="color: #666666; font-style: italic;">// Also, assume this method is *outside* the Dog class.</span>
<span style="color: #666666; font-style: italic;">//</span>
<span style="color: #000066; font-weight: bold;">int</span> getPuppyCount<span style="color: #009900;">&#40;</span>Dog kennel<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> nPuppies <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> d<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> d<span style="color: #339933;">&lt;</span>kennel.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> d<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>kennel<span style="color: #009900;">&#91;</span>d<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">ageInYears</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      nPuppies<span style="color: #339933;">++;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;There are &quot;</span> <span style="color: #339933;">+</span> nPuppies <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot; puppies!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>There are 2 problems with the following method.<br />
One problem is syntactic; the other problem is algorithmic.<br />
What are the 2 problems?</strong><br />
Answer: The first thing you should spot is that there is a disagreement in data type between the function&#8217;s return value, and the function&#8217;s signature. The signature says that it will be returning an Object of type Dog, but the return value is currently an integer! The correct return value would be kennel[oldestDogID], not oldestDogID. <br />After you&#8217;ve taken care of that syntactic error, you can see that the function always returns the same number, because oldestDogID is never modified in the function. This can be fixed by writing oldestDogID = i; inside the if{} block.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Assume there exists a correctly-defined Dog class.</span>
<span style="color: #666666; font-style: italic;">// Also, assume the following method is *outside* the Dog class.</span>
<span style="color: #666666; font-style: italic;">//</span>
Dog getOldestDog <span style="color: #009900;">&#40;</span>Dog kennel<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> oldestDogID <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span> oldestDogAge <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> d<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> d<span style="color: #339933;">&lt;</span>kennel.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> d<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>kennel<span style="color: #009900;">&#91;</span>d<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">ageInYears</span> <span style="color: #339933;">&gt;</span> oldestDogAge<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      oldestDogAge <span style="color: #339933;">=</span> kennel<span style="color: #009900;">&#91;</span>d<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">ageInYears</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">return</span> oldestDogID<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>The following class, Thing, implements a method getBiggerThing().<br />
Is this legal? (Yes or no?)</strong><br />
Answer: Yes, it certainly is. This is called a &#8220;factory&#8221; method.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Thing <span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> property<span style="color: #339933;">;</span>
&nbsp;
  Thing <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> p<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    property <span style="color: #339933;">=</span> p<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  Thing getBiggerThing<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">new</span> Thing<span style="color: #009900;">&#40;</span>property<span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2008/11/no-trick-questions-stuff-to-consider/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Method signatures, and the &#8220;public&#8221; and &#8220;static&#8221; keywords</title>
		<link>http://golancourses.net/compform/2008/11/method-signatures-and-special-keywords/</link>
		<comments>http://golancourses.net/compform/2008/11/method-signatures-and-special-keywords/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 05:09:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.golancourses.net/blog/?p=255</guid>
		<description><![CDATA[By now you should be familiar with the concept of a method&#8217;s &#8220;signature&#8220;: the precise syntax for the kinds of data that the method is expecting for its inputs/arguments/parameters, and the kinds of data you can expect it to return as its output/return-type. For example, the following method takes a String (argument) and returns a [...]]]></description>
			<content:encoded><![CDATA[<p>By now you should be familiar with the concept of a method&#8217;s &#8220;<strong>signature</strong>&#8220;: the precise syntax for the kinds of data that the method is <em>expecting </em>for its inputs/arguments/parameters, and the kinds of data you can <em>expect it to return </em>as its output/return-type. For example, the following method takes a String (argument) and returns a boolean (return type):</p>
<pre>     boolean isAnEnrolledStudentHere (String studentName) {....}</pre>
<p>You are hereby reminded that complex Objects can appear as arguments and/or return-types. The following method has both, for example:</p>
<pre>     Student getTallestStudent (Classroom myClass) {....}</pre>
<p>If you are ever asked to write a function with a non-void return type in its signature, <em>the first thing you should do </em>is write the return statement at the bottom of your page! For example, given the above signature for getTallestStudent, you know that it <em>must </em>look something like the following:</p>
<pre>     Student getTallestStudent (Classroom myClass) {
          Student S;
          // ... blah blah blah, figure out S
          return S;
     }</pre>
<p>So, at some point, you may encounter (or be asked to write) a function with a signature similar to the following:</p>
<pre>     public static void doSomething (int howManyTimes) {...}</pre>
<p><em><strong>DON&#8217;T</strong></em> get tripped up by the &#8220;public&#8221; and &#8220;static&#8221; keywords!!! For the purposes of our class (and your final exam), all of the methods you have been writing are public, and most have been static. It&#8217;s not worth distracting you with the reasons why. You won&#8217;t be expected to use these keywords on your exam, and if you write a function without one of these keywords on your final exam, I&#8217;ll make sure you aren&#8217;t penalized.</p>
]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2008/11/method-signatures-and-special-keywords/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Practice Exams Available</title>
		<link>http://golancourses.net/compform/2008/11/practice-exams-available/</link>
		<comments>http://golancourses.net/compform/2008/11/practice-exams-available/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 03:31:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.golancourses.net/blog/?p=253</guid>
		<description><![CDATA[Dear Students, Professor Margaret Reid-Miller has produced an excellent set of Practice Examinations for 15-100, including sample solutions. I heartily recommend you study from them: http://www.cs.cmu.edu/~mrmiller/15-100/Exams/exams.html]]></description>
			<content:encoded><![CDATA[<p>Dear Students,</p>
<p>Professor Margaret Reid-Miller has produced an excellent set of Practice Examinations for 15-100, including sample solutions. I <em>heartily </em>recommend you study from them:</p>
<p><a href="http://www.cs.cmu.edu/~mrmiller/15-100/Exams/exams.html" target="_self">http://www.cs.cmu.edu/~mrmiller/15-100/Exams/exams.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://golancourses.net/compform/2008/11/practice-exams-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

