Компилятор Turbo Pascal чаще всего используют для обучения начинающих программистов. Тут срабатывает принцип: чем проще - тем лучше. Для новичков не должно быть ничего лишнего, что отвлекало бы внимание. У нас уже есть онлайн-версия WEB-среды разработки Free Pascal. Также новичкам будет полезен и наш редактор програм на Паскале.
Но если вас интересует Турбо Паскаль 5.5 в своем первозданном виде, то теперь у нас есть и такая версия. Посмотреть в работе онлайн-эмулятор компилятора Турбо-Паскаля можно здесь. Вам ничего не надо устанавливать. Важно только, чтобы в вашем браузере была включена поддержка JavaScript (если вы не отключали javascript, то у вас должно быть включено по умолчанию).
Помощь по работе.
У Вас есть всего два режима. Первый режим Edit - редактор кода. Чтобы зайти в редактор, нажмите латинскую букву E - первая буква команды Edit. Второй режим - экран, на котором будет отображаться результат выполнения вашей программы. Запустить программу на выполнение можно, нажав клавишу R - первая буква команды Run.
Скрины эмулятора.
После того, как вы зайдете в онлайн эмулятор компилятора Турбо Паскаля, вы увидите экран с мигающим курсором-приглашением к выполнению программы. На экране будут подсказки, какие клавиши нажимать, а также число байт, занятых кодом программы и количество свободного места в памяти для вашей программы. Все выглядит также как в старом добром Паскале. Ну, по крайней мере очень похоже.
Для того, чтобы написать Вашу первую программу, следует зайти в редактор. Для этого, нажмите клавишу Edit. Вы увидите пустое окно редактора. Наберите там код программы. Например, такой как на скрине слева - простейшая программа приветствие. Дальше надо нажать ссылку (внизу редактора) : закрыть редактор. Вы вернетесь к основному режиму. Вы увидите, что изменилось число байт, занимаемых вашей программой и соответственно уменьшится свободное место.
Следующий шаг - запуск на выполнение Вашей первой программы. Для запуска нажимаем клавишу R. Если программа не содержит ошибок, то на экран будет выведен результат ее выполнения. В примере - это сообщение "Hello world!". Если программа содержит ошибки, то вы получите соответствующее сообщение об ошибке. Как правило, сообщение про ошибку начинается словом "Error:", а дальше следует описание ошибки и строка, в которой ошибка допущена. Все по взрослому.
На скрине слева приведен пример сообщения, которое выдается на экран, если в коде программы встретилась ошибка. "Компилятор-эмулятор" предпринимает попытку идентифицировать ошибку, чтобы помочь начинающему программисту ее исправить. В данном примере, мы чуть подпортили код простейшей программы приветствия, убрав закрывающую кавычку. Компилятор предположил три возможных причины по которой коде не выполнился.
Для "продвинутых" пользователей есть еще один режим, который можно вызвать а затем закрыть, нажав клавишу X. Назовем этот режим режимом отладки. Остановить выполнение программы можно нажав клавишу Esc. Надо отметить, что этот компилятор нельзя считать полностью соответствующим полноценной версии. Кое-что тут отсутствует по понятным причинам. Пробуйте, экспериментируйте.
Примеры программ.
В завершение приведем примеры программы, которые вы можете скопировать (выделить и нажать Ctrl+C), а затем вставить в редактор (Ctrl+V) и выполнить. Примеры приводятся чтобы вы убедились, что возможности "компилятора-эмулятора" весьма впечатляют.
Пример. Программа приветствие.
program TestProgram;
begin
Writeln('Hello world!');
end.
Пример. Фейерверк.
program FireWorks;
{$R+}
uses
Crt, Graph;
var
GraphDriver, GraphMode, ErrorCode : Integer;
Ch : Char;
I, J, K, XStart, YStart : Integer;
XX,YY,CC : Array[1..1000] of Integer;
FX,FY,DX,DY : Array[1..70] of Real;
R, T, X, Y : Real;
procedure Explode (C : Integer);
begin
T := -Pi;
I := 0;
Repeat
I := I + 1;
DX[I] := Sin(T)*5;
DY[I] := Cos(T)*5;
FX[I] := X;
FY[I] := Y;
T := T + 0.15;
Until T > Pi;
K := 0;
Repeat
For J := 1 to I do
begin
If C = 0 then
PutPixel (Round(FX[J]),Round(FY[J]),0)
else
PutPixel (Round(FX[J]),Round(FY[J]),Random(GetMaxColor+1));
FX[J] := FX[J] + DX[J];
FY[J] := FY[J] - DY[J];
DY[J] := DY[J] - 0.2;
end;
K := K + 1;
Delay(10); { This was not in the original. }
Until Keypressed or (K > 50);
end;
procedure ShootFireWork;
begin
{ Delay (1000); }
Randomize;
T := Random / 2 - 0.25 + Pi/2;
X := XStart;
Y := YStart;
R := 20;
I := 0;
Repeat
Inc (I);
XX[I] := Round(X);
YY[I] := Round(Y);
CC[I] := GetPixel (XX[I],YY[I]);
If I > 1 then
If (XX[I] = XX[I-1]) and (YY[I] = YY[I-1]) then CC[I] := CC[I-1];
PutPixel (XX[I],YY[I],Random(GetMaxColor+1));
If I > 5 then
PutPixel (XX[I-5],YY[I-5],CC[I-5]);
X := X + Cos(T)*R;
Y := Y - Sin(T)*R;
If T > Pi/2 then
T := T + 0.02
else
T := T - 0.02;
R := R * 0.93;
Delay (20);
Until KeyPressed or (T < 0) or (T > Pi);
For J := I-5 to I do
PutPixel (XX[J],YY[J],CC[J]);
{ ch := readkey; }
Explode (1);
Explode (0);
end;
begin
GraphDriver := Detect;
InitGraph (GraphDriver, GraphMode, '..');
ErrorCode := GraphResult;
If ErrorCode <> grOk then
begin
Writeln ('Graphics Error: ',GraphErrorMsg(ErrorCode));
Halt;
end;
SetColor (GetMaxColor);
XStart := GetMaxX div 2;
YStart := GetMaxY - 20;
Repeat
ShootFireWork;
Until Keypressed;
Ch := ReadKey;
ClearDevice;
CloseGraph;
end.
Пример. Случайный сплайн.
program BSplineCurve;
{$N+}
uses
Crt, Graph;
const
NumDots = 5;
type
xyzArray = Array[0..100,1..3] of LongInt;
var
N,K,GraphDriver, GraphMode, ErrorCode : Integer;
Ch : Char;
knotK, knotN : Integer;
function Knot (I : Integer) : Integer;
begin
If I < knotK then
Knot := 0
else
If I > knotN then Knot := knotN - knotK + 2
else
Knot := i - knotK + 1;
end;
function NBlend (I,K : Integer; U : Real) : Real;
var
T : Integer;
V : Real;
begin
If K <= 1 then
begin
V := 0;
If (Knot(I) <= U) and (U < Knot(I+1)) then V := 1;
end
else
begin
V := 0;
T := Knot(I+K-1)-Knot(I);
If T <> 0 then V := (u-Knot(i))*NBlend(i,K-1,u)/t;
t := knot(i+K) - knot(i+1);
If T <> 0 then
V := V + (Knot(I+K)-U)*NBlend(I+1,K-1,U)/t;
end;
NBlend := V;
end;
procedure BSpline (var X,Y,Z : Real; U : Real; N,K : Integer; P : xyzArray);
var
I : integer;
B : Real;
begin
KnotK := K;
KnotN := N;
X := 0;
Y := 0;
Z := 0;
For I := 0 to N do
begin
B := NBlend(I,K,U);
X := X + p[I,1]*B;
Y := Y + p[I,2]*B;
end;
end;
procedure DrawCurve;
var
ControlPoints : xyzArray;
I : LongInt;
X, Y, Z : Real;
begin
For I := 0 to 30 do
ControlPoints[I,3] := 0;
For I := 0 to NumDots-1 do
begin
ControlPoints[I,1] := Random(GetMaxX);
ControlPoints[I,2] := Random(GetMaxY);
end;
SetColor (LightCyan);
SetLineStyle (UserBitLn,1,NormWidth);
For I := 0 to NumDots-1 do
If I = 0 then
MoveTo (ControlPoints[I,1],ControlPoints[I,2])
else
LineTo (ControlPoints[I,1],ControlPoints[I,2]);
SetLineStyle (SolidLn,0,NormWidth);
SetColor (Yellow);
N := NumDots-1;
K := 3;
SetColor (K+8);
For I := 0 to 2300 do
begin
BSpline(X,Y,Z,I/2301*(N-K+2),N,K,ControlPoints);
If I = 0 then
MoveTo (Round(X),Round(Y))
else
LineTo (Round(X),Round(Y));
If Keypressed then Halt;
end;
end;
begin
GraphDriver := Detect;
InitGraph (GraphDriver, GraphMode, '..');
ErrorCode := GraphResult;
If ErrorCode <> grOk then Halt;
SetColor (GetMaxColor);
Randomize;
DrawCurve;
Ch := ReadKey;
ClearDevice;
CloseGraph;
end.
cats = 2'
j = 1
while len(cats) <= n:
cats = cats + '2 * j
i = i + 1
print (cats)
Type
tPoint = object
x,y,color:integer;
Procedure draw;
end;
Procedure tPoint.draw(int x, int y, int color);
begin
PutPixel(x,y,color);
end;
var arr_point:array[1..100] of tPoint;
var gd,gm,p:integer;
Begin
clrscr;
gd:=0;
initgraph(gd,gm,'C:\tp7\tp7\bgi');
Randomize;
for p:=1 to 100 do
begin
x:=Random(601);
y:=Random(451);
color:=Random(15)+1;
arr_point[p].draw(x,y,color);
end;
End.
Uses graphabc, events,timers;
const
r=5 ;
d=7;
type
TDirection = (None, Left, Right, Up, Down);
var x,t,y,i,z,xr,yr,prin1,prin2,prin3,prin4,prin5,k,s4et,prin6: integer;
Direction :TDirection;
xs,ys,bufx,bufy:array[1..200]of integer;
procedure shar3;
begin
SetBrushColor(clYellow);
circle(xs[k],ys[k],r);
end;
procedure Circl;
begin
SetBrushColor(clBlack);
circle(x,y,r);
end;
procedure rshar ;
begin
xr:=Random(WindowWidth) ;
yr:=Random( WindowHeight);
end;
procedure rshar2;
begin
SetBrushColor(clYellow);
circle(xr,yr,r);
end;
procedure XP(Key:integer);
begin
case Key of
VK_Left: Direction := Left ;
VK_Right:Direction := Right ;
VK_UP: Direction := UP ;
VK_Down: Direction :=Down ;
end;
circle(x,y,r);
end;
procedure pause;
begin
for i:=1 to 1 do
begin
Circl;
rshar2;
ClearWindow;
rshar2 ;
prin1:=(xr-x+r)*(xr-x+r)+(yr-y)*(yr-y) ;
prin2:=(xr-x-r)*(xr-x-r)+(yr-y)*(yr-y) ;
prin3:=(xr-x)*(xr-x)+(yr-y+r)*(yr-y+r) ;
prin4:=(xr-x)*(xr-x)+(yr-y-r)*(yr-y-r) ;
prin5:=R*R;
if (prin1)<=(prin5) then begin
rshar ;
s4et:=s4et+1;
end;
if (prin2)<=(prin5) then begin
rshar ;
s4et:=s4et+1;
end;
if (prin3)<=(prin5) then begin
rshar ;
s4et:=s4et+1;
end;
if (prin4)<=(prin5) then begin
rshar ;
s4et:=s4et+1;
end;
case Direction of
Left: begin x:=x-d; if x<=0 then x:=WindowWidth end;
Up: begin y:=y-d; if y<=0 then y:=WindowHeight end;
Right: begin x:=x+d; if x>=WindowWidth then x:=0 end;
Down: begin y:=y+d; if y>=WindowHeight then y:=0 end;
end;
xs[1]:=x;
ys[1]:=y;
for k:=1 to s4et do
begin
bufx[k]:=xs[k];
bufy[k]:=ys[k];
end;
for k:=1 to s4et do
begin
xs[k+1]:=bufx[k];
ys[k+1]:=bufy[k] ;
end;
for k:=2 to s4et do
shar3;
Circl;
end;
end;
begin
rshar;
s4et:=2;
Direction := None;
x:=WindowWidth div 2;
y:=WindowHeight div 2;
OnKeyDown:=XP;
CreateTimer(150,pause);
end.
a:longint;
s:integer;
begin
readln(a);
repeat
s:=s+a mod 10;
a:=a div 10;
until a=0;
writeln(s);
end.
s:=0;
for k:= 5 to 9 do
S:= s+ k*8 ;
writeln(s) ;
end.
var A,B,C,D,T,E: real;
begin
writeln ( 'Enter A, B, C, D ');
readln ( A, B, C, D );
T:=exp(1⁄3*ln(1+A))+(((sin(2*a))⁄(cos(2*a))))⁄((1+sqrt(A)));
E:=2*sqr(T)+ln(B)+(exp(pi*c*d));
writeln ( 'T=' , T );
writeln ( 'E=' , E );
End.
var name: string;
write('Напиши своё имя: ');
read(name);
write('Молодец, ', name, '!');
var years: integer;
writeln('Сколько тебе лет?');
read(years);
write('', years, ', значит. А мне ещё и года нету(((');
writeln('Мне пора на компьютер твоего друга... Пока');
end.