99 Bottles of Beer/Pascal: Difference between revisions

From Rosetta Code
Content added Content deleted
m (Avoid miscounting task entries twice)
m (Fixed syntax highlighting.)
 
Line 1: Line 1:
<!--
<!--
=Pascal=
===Pascal===
-->
-->
{{collection|99 Bottles of Beer}}
{{collection|99 Bottles of Beer}}
Line 6: Line 6:
__toc__
__toc__


<!--
See [[99 Bottles of Beer/Pascal]]
-->


<span style='font-family: "Linux Libertine",Georgia,Times,serif;font-size:150%;'>[[Component Pascal]]</span><hr>
<span style='font-family: "Linux Libertine",Georgia,Times,serif;font-size:150%;'>[[Component Pascal]]</span><hr>
BlackBox Component Builder
BlackBox Component Builder
<lang oberon2>
<syntaxhighlight lang="oberon2">
MODULE BottlesOfBeer;
MODULE BottlesOfBeer;
IMPORT StdLog;
IMPORT StdLog;
Line 35: Line 32:
END Sing;
END Sing;
END BottlesOfBeer.
END BottlesOfBeer.
</syntaxhighlight>
</lang>
Execute: ^Q BottlesOfBeer.Sing<br/>
Execute: ^Q BottlesOfBeer.Sing<br/>
Output:
Output:
Line 69: Line 66:
:''Or
:''Or


<lang Delphi>program Hundred_Bottles;
<syntaxhighlight lang="delphi">program Hundred_Bottles;


{$APPTYPE CONSOLE}
{$APPTYPE CONSOLE}
Line 95: Line 92:
End ;
End ;


end.</lang>
end.</syntaxhighlight>




<span style='font-family: "Linux Libertine",Georgia,Times,serif;font-size:150%;'>[[Pascal]]</span><hr>
<span style='font-family: "Linux Libertine",Georgia,Times,serif;font-size:150%;'>[[Pascal]]</span><hr>
<lang pascal>program BottlesOfBeer;
<syntaxhighlight lang="pascal">program BottlesOfBeer;


var
var
Line 124: Line 121:
writeln('No more bottles of beer on the wall');
writeln('No more bottles of beer on the wall');
end
end
end.</lang>
end.</syntaxhighlight>

Latest revision as of 20:36, 1 September 2022

99 Bottles of Beer/Pascal is part of 99 Bottles of Beer. You may find other members of 99 Bottles of Beer at Category:99 Bottles of Beer.

99 Bottles of Beer done in Pascal-languages


Component Pascal


BlackBox Component Builder

MODULE BottlesOfBeer;
IMPORT StdLog;
CONST bottles = 99;

PROCEDURE Part(i: INTEGER);
BEGIN
	StdLog.Int(i);StdLog.String(" bottles of beer on the wall");StdLog.Ln;
	StdLog.Int(i);StdLog.String(" bottles of beer");StdLog.Ln;
	StdLog.String("Take one down, pass it around");StdLog.Ln;
	StdLog.Int(i - 1);StdLog.String(" bottles of beer on the wall.");StdLog.Ln;
	StdLog.Ln
END Part;

PROCEDURE Sing*;
VAR
	i: INTEGER;
BEGIN
	FOR i := bottles TO 1 BY -1 DO
		Part(i)
	END
END Sing;
END BottlesOfBeer.

Execute: ^Q BottlesOfBeer.Sing
Output:

 99 bottles of beer on the wall
 99 bottles of beer
Take one down, pass it around
 98 bottles of beer on the wall.

 98 bottles of beer on the wall
 98 bottles of beer
Take one down, pass it around
 97 bottles of beer on the wall.

 97 bottles of beer on the wall
 97 bottles of beer
Take one down, pass it around
 96 bottles of beer on the wall.

...


 1 bottles of beer on the wall
 1 bottles of beer
Take one down, pass it around
 0 bottles of beer on the wall.


Delphi


See Pascal
Or
program Hundred_Bottles; 

{$APPTYPE CONSOLE} 

uses SysUtils; 

const C_1_Down = 'Take one down, pass it around' ; 

Var i : Integer ; 

// As requested, some fun : examples of Delphi basic techniques. Just to make it a bit complex 

procedure WriteABottle( BottleNr : Integer ) ; 
begin 
  Writeln(BottleNr, ' bottles of beer on the wall' ) ; 
end ; 

begin 
  for i := 99 Downto 1 do begin 
  WriteABottle(i); 
  Writeln( Format('%d bottles of beer' , [i] ) ) ; 
  Writeln( C_1_Down ) ; 
  WriteABottle(i-1); 
  Writeln ; 
End ; 

end.


Pascal


program BottlesOfBeer;

var
    i: integer;

begin
    for i := 99 downto 1 do
        if i <> 1 then
            begin
                writeln(i, ' bottles of beer on the wall');
                writeln(i, ' bottles of beer');
                writeln('Take one down, pass it around');
                if i = 2 then
                    writeln('One bottle of beer on the wall')
                else
                    writeln(i - 1, ' bottles of beer on the wall');
                writeln;
            end
        else
            begin
                writeln('One bottle of beer on the wall');
                writeln('One bottle of beer');
                writeln('Take one down, pass it around');
                writeln('No more bottles of beer on the wall');
            end
end.