Here are the programs we wrote and discussed during tutorial #2 on October 17th.


greatest.pas


// compute the greatest of three integers

uses math;

var
  x, y, z: integer;
  greatest: integer;
  
begin
  readln(x, y, z);
  
  // solution 1
  if (x > y) and (x > z) then
    greatest := x
  else if y > z then
    greatest := y
  else greatest := z;
  
  // solution 2
  greatest := x;
  if y > greatest then greatest := y;
  if z > greatest then greatest := z;
  
  // solution 3
  greatest := max(max(x, y), z);
  
  writeln(greatest);
end.

leap.pas

// Is a given year a leap year?

var
  year: integer;
  leap: boolean;
  
begin
  readln(year);
  
  // solution 1: a series of ifs
  
  if year mod 400 = 0 then
    leap := true
  else if year mod 100 = 0 then
    leap := false
  else if year mod 4 = 0 then
    leap := true
  else leap := false;
  
  // solution 2: a single line
  
  leap := (year mod 400 = 0) or ((year mod 4 = 0) and (year mod 100 <> 0));
  
  writeln(leap);
end.



day_of_year.pas

// Given a month and day, compute the day number within the calendar year.

var
  days: array[1..12] of integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
  
  month, day: integer;
  leap: string;
  
  i, sum: integer;

begin
  write('month and day? ');
  readln(month, day);
  write('leap year (yes/no)? ');
  readln(leap);

  if leap = 'yes' then days[2] := 29;
  sum := 0;
  for i := 1 to month - 1 do
    sum := sum + days[i];
  
  writeln(sum + day);
end.



tic_tac_toe.pas

// Allow two players to play Tic Tac Toe.
// This implementation is incomplete: it doesn't check for wins/draws.

uses crt;

var
  board: array[1..3, 1..3] of integer;  // 0 = empty, 1 = X, 2 = O
  player: integer = 1;
  
  symbols: array[0..2] of char = ('.', 'X', 'O');
  // or, alternatively:
  //    symbols: string = '.XO';
  
  row, column: integer;

begin
  for row := 1 to 3 do
    for column := 1 to 3 do
      board[row, column] := 0;
  
  repeat
    clrScr;
    
    // draw the board
    for row := 1 to 3 do
      begin
        for column := 1 to 3 do
          write(symbols[board[row, column]], ' ');
        writeln;
        writeln;
      end;
      
    repeat
      write('player ', symbols[player], ' enter row/column: ');
      readln(row, column);
      if board[row, column] <> 0 then
        writeln('You can''t go there');
    until board[row, column] = 0;
    
    board[row, column] := player;
    player := 3 - player;
  until false;
end.