99 Bottles of Beer/Pascal: Difference between revisions

From Rosetta Code
Content added Content deleted
m (→‎{{header|Pascal}}: oops, forgot a writeln at the end of the verse)
m (Fixed syntax highlighting.)
 
(3 intermediate revisions by 2 users not shown)
Line 1:
<!--
===Pascal===
-->
{{collection|99 Bottles of Beer}}
Line 6:
__toc__
 
<!--
See [[99 Bottles of Beer/Pascal]]
-->
 
<span style='font-family: "Linux Libertine",Georgia,Times,serif;font-size:150%;'>[[Component Pascal]]</span><hr>
=={{header|Component Pascal}}==
BlackBox Component Builder
<langsyntaxhighlight lang="oberon2">
MODULE BottlesOfBeer;
IMPORT StdLog;
Line 35 ⟶ 32:
END Sing;
END BottlesOfBeer.
</syntaxhighlight>
</lang>
Execute: ^Q BottlesOfBeer.Sing<br/>
Output:
Line 64 ⟶ 61:
 
 
<span style='font-family: "Linux Libertine",Georgia,Times,serif;font-size:150%;'>[[Delphi]]</span><hr>
=={{header|Delphi}}==
:''See [[#Pascal|Pascal]]''
 
:''Or
 
<langsyntaxhighlight Delphilang="delphi">program Hundred_Bottles;
 
{$APPTYPE CONSOLE}
Line 95 ⟶ 92:
End ;
 
end.</langsyntaxhighlight>
 
 
<span style='font-family: "Linux Libertine",Georgia,Times,serif;font-size:150%;'>[[Pascal]]</span><hr>
=={{header|Pascal}}==
<langsyntaxhighlight lang="pascal">program BottlesOfBeer;
 
var
i: Integerinteger;
 
begin
for i := 99 downto 1 do
if i =<> 1 then begin
writeln('One bottle of beer on the wall');begin
writeln(i, 'One bottlebottles of beer on the wall');
writeln('Take one down writeln(i, pass' bottles itof aroundbeer');
writeln('No more bottlesTake ofone beerdown, onpass theit wallaround');
end else begin if i = 2 then
writeln(i, 'One bottlesbottle of beer on the wall');
writeln(i, ' bottles of beer');else
writeln('Takei one- down1, pass' bottles of beer on itthe aroundwall');
if i = 2 thenwriteln;
writeln('One bottle of beer on the wall')end
else
end; begin
writeln(i - 1, ' bottles of beer on the wall')
writeln('One bottle of beer on the wall');
writeln('One bottle of beer');
end;
writeln('Take one down, pass it around');
end. </lang>
writeln(i'No - 1, 'more bottles of beer on the wall');
end
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.