Subj : Baja Class 100.2
To   : Finnigann
From : Amcleod
Date : Tue Oct 23 2001 11:17 am

RE: Baja Class 100.2
BY: Finnigann to Pistolgrip on Tue Oct 23 2001 05:09 pm

> Is the algorithm part? Pencil and Paper part... This one of the first
> steps and where I bog down.
>
> Determining where to start, or what must happen first, second,
> third...etc
>
> I guess after it is determined what you must do to get from the first
> step to the last step, then you can figure out what files and names to
> use.

This is all part of the program-design, which can be done entirely by
non-programers if needed.  There are many different techniques, and their
merits are the subject of near-religeous argument.

One very common method of designing your program is FLOWCHARTING.  Yes,
flowcharts are completely passe these days -- back in 1975 I was taught not to
use it.  But for the beginner, it can be a very simple method of visualizing
the program algorythm.  I personally like to use an informal data-flow diagram
technique wherein I graphically depict where the data comes from, where it is
stored, where it goes to, and how it is manipulated along the way.  In actual
fact, when you have experience, you automatically select the design method that
your experience tells you most suited to the current problem-at-hand.

> Is this something that can be taught?

There are classes and text-books available on the subject of system design.
Any introductory work on programming will attempt to give you the gist.

> I imagine an experienced programmer has basic steps that they use in
> whatever program they are writing. And steps they include when... say
> they open a file they might check to see if one exists first

Sure.  Again, experience will tell you what fragments work best.  Let's say you
are opening a file.  You could do

   hnd = fopen( "filename.text", "r" );

but suppose the file didn't open for whatever reason?  So maybe you just make
a habit of doing

   if (!(hnd=fopen(""filename.text","r"))) {
       puts(strerror(errno));
       exit(1);
   }

every time instead.  Each programmer will develop his own style.

> Alright lets design something simple; open, read, and depending on what
> is in the opened file, write a NEW file.

Okay, let me set YOU an exercise.  To develop a BAJA program to do the
following:

   1) Open a disk file called INPUT.DAT for reading, halt with an error
      message if the file is not found or for some reason won't open.
   2) Open a disk file called OUTPUT.DAT for writing, creating the file
      if it doesn't exist, truncate it if it does exist.  If it can't be
      opened/created, a) close the input file opened in step 1, b) print
      an error message, c) halt.
   3) Read one line at a time from the input file, for processing.
   4) Process each line as follows:
       4a) If the line is a comment (starts with "#") ignore it.
       4b) If it is NOT a comment, convert it to UPPER CASE
   5) Write each line to the output file.
   6) When all input data has been processed, close input & output files.

There you go.  A simple program, broken down into six simple parts.  Work on
each part and show us what you come up with.  Obvious place to start is with
the BAJA documentation and the command for opening a file.  You are talking
both INput and OUTput files.  This will cover steps 1 and 2.  While doing this
you may as well check out how to CLOSE files, possibly needed in step 2 and
definately in step 6.

Get going!

:)

---
� Synchronet � Vertrauen � Home of Synchronet � telnet://vert.synchro.net