Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 8
1

Перевод из turbo Pascal в PascalABC.NET

08.04.2015, 22:51. Просмотров 1051. Ответов 4
Метки нет (Все метки)


Здраствуйте. Буду признателен, если поможете переделать программу, созданную в turbo Pascal, под PascalABC.NET.
Сам в программирование не силён и перевод занимает долгое время. Поэтому надеюсь на вашу помощь. Заранее спасибо.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
Program Lomanaja;
Uses crt, graph;
Var
    i, a: integer;
    s: string[63];
    k: char;
 
Procedure BuildMenu;
Const
    l: array[1..3] of string[5] = (
    'Play', 'About', 'Exit');
Begin
ClrScr;
For i := 1 to 3 do
begin
    If i = a then TextColor(Red)
    Else TextColor(White);
    WriteLn(l[i]);
end;
End;
 
Procedure Play;
Const m = 128;
Var
    i, d, xp, yp, x0, y0, xM, yM, gd, gm: integer;
    x, y: array[1..m] of integer;
    n: array[1..m] of boolean;
Begin
gd := detect;
InitGraph(gd, gm, '');
 
x0 := 8;
y0 := 8;
xM := GetMaxX - 8;
yM := GetMaxY - 8;
xp := x0;
yp := y0;
 
d := 0;
n[1] := true;
 
Repeat
    ClearViewPort;
 
    MoveTo(x0,y0);
    LineTo(xM, y0);
    LineTo(xM, yM);
    LineTo(x0, yM);
    LineTo(x0, y0);
    Bar(xp, yp, xp + 8, yp + 8);
 
    For i := 1 to d do begin
        If n[i] then MoveTo(x[i], y[i])
        Else LineTo(x[i], y[i]);
    end;
 
    k := ReadKey;
    If k = #0 then 
    begin
        k := ReadKey;
        Case k of
            #75: If xp > x0 then xp := xp - 8;
            #77: If xp < xM - 8 then xp := xp + 8;
            #72: If yp > y0 then yp := yp - 8;
            #80: If yp < yM - 8 then yp := yp + 8;
        end;
    end
    Else begin
        Case k of
            #13:
            begin
                If (d > 0) and (x[d] = xp + 4) and (y[d] = yp + 4) then n[d + 1] := true
                Else begin
                    d := d + 1;
                    x[d] := xp + 4;
                    y[d] := yp + 4;
                end;
            end;
            #27:
            begin
                For i := 1 to d do
                begin
                    If (x[i] = xp + 4) and (y[i] = yp + 4) then
                    begin
                        While not n[i] do i := i - 1;
                        Repeat
                            x[i] := 0;
                            y[i] := 0;
                            i := i + 1;
                        Until n[i];
                        Break;
                    end;
                end;
            end;
        end;
    end;
Until k = #113; {q}
CloseGraph;
End;
 
Procedure About;
Begin
ClrScr;
ReadKey;
End;
 
Begin
a := 1;
BuildMenu;
 
Repeat
    k := ReadKey;
    If k = #0 then begin
        k := ReadKey;
        Case k of
            #72: begin
                a := a - 1;
                If a < 1 then a := 3;
            end;
            #80: begin
                a := a + 1;
                If a > 3 then a := 1;
            end;
        end;
    end
    Else begin
        If k = #13 then
        Case a of
            1: Play;
            2: About;
            3: Break;
        end;
    end;
    BuildMenu;
Until k = #27;
End.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2015, 22:51
Ответы с готовыми решениями:

Перевод с Turbo Pascal на PascalABC.NET
господа, можете помочь? у меня тут программа написана на языке турбо паскаль. пожалуйста переводите...

Из Turbo Pascal в PascalABC.NET
Добрый день! Может кто-нибудь помочь переписать код программы из Turbo Pascal (если не ошибаюсь,...

Я создал модуль в Turbo Pascal 7.0, как использовать его в PascalABC.NET?
Как подключить этот модуль, в какую папку сохранить, я вот смотрю в структуру каталогов...

Перевод программы с Turbo Pascal на Pascal ABC.NET
написала программу в паскаль турбо на рабочем компьютере. перенесла в паскаль авсNet так как дома...

4
Эксперт Pascal/Delphi
6546 / 4407 / 4710
Регистрация: 05.06.2014
Сообщений: 21,664
10.04.2015, 11:48 2
Лучший ответ Сообщение было отмечено Sergey1982 как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
Program Lomanaja;
Uses crt, graphABC;
Var
    i, a: integer;
    s: string[63];
    k: char;
 
Procedure BuildMenu;
Const
    l: array[1..3] of string[5] = (
    'Play', 'About', 'Exit');
Begin
ClrScr;
//cursoroff;
For i := 1 to 3 do
begin
    If i = a then TextColor(Red)
    Else TextColor(Black);
    WriteLn(l[i]);
end;
End;
 
Procedure Play;
Const m = 128;
Var
    i, d, xp, yp, x0, y0, xM, yM, gd, gm: integer;
    GetMaxX,GetMaxY: integer;
    x, y: array[1..m] of integer;
    n: array[1..m] of boolean;
Begin
{gd := detect;
InitGraph(gd, gm, '');}
SetWindowSize(640,480);
GetMaxX:=WindowWidth;
GetMaxY:=WindowHeight;
 
x0 := 8;
y0 := 8;
xM := GetMaxX - 8;
yM := GetMaxY - 8;
xp := x0;
yp := y0;
 
d := 0;
n[1] := true;
 
Repeat
    ClearWindow;;
    SetPenColor(clBlack);
    MoveTo(x0,y0);
    LineTo(xM, y0);
    LineTo(xM, yM);
    LineTo(x0, yM);
    LineTo(x0, y0);
    Rectangle(xp, yp, xp + 8, yp + 8);
 
    For i := 1 to d do begin
        If n[i] then MoveTo(x[i], y[i])
        Else LineTo(x[i], y[i]);
    end;
 
    k := ReadKey;
    If k = #0 then
    begin
        k := ReadKey;
        Case k of
            #77: If xp > x0 then xp := xp - 8;
            #75: If xp < xM - 8 then xp := xp + 8;
            #72: If yp > y0 then yp := yp - 8;
            #80: If yp < yM - 8 then yp := yp + 8;
        end;
    end
    Else begin
        Case k of
            #13:
            begin
                If (d > 0) and (x[d] = xp + 4) and (y[d] = yp + 4) then n[d + 1] := true
                Else begin
                    d := d + 1;
                    x[d] := xp + 4;
                    y[d] := yp + 4;
                end;
            end;
            #27:
            begin
                For i := 1 to d do
                begin
                    If (x[i] = xp + 4) and (y[i] = yp + 4) then
                    begin
                        While not n[i] do i := i - 1;
                        Repeat
                            x[i] := 0;
                            y[i] := 0;
                            i := i + 1;
                        Until n[i];
                        Break;
                    end;
                end;
            end;
        end;
    end;
Until k = #113; {q}
//CloseGraph;
End;
 
Procedure About;
Begin
ClrScr;
Writeln('About!');
ReadKey;
End;
 
Begin
a := 1;
BuildMenu;
 
Repeat
    k := ReadKey;
    If k = #0 then begin
        k := ReadKey;
        Case k of
            #72: begin
                a := a - 1;
                If a < 1 then a := 3;
            end;
            #80: begin
                a := a + 1;
                If a > 3 then a := 1;
            end;
        end;
    end
    Else begin
        If k = #13 then
        Case a of
            1: Play;
            2: About;
            3: Break;
        end;
    end;
    BuildMenu;
Until k = #27;
End.
1
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 8
11.04.2015, 10:23  [ТС] 3
Огромное спасибо.
В 15 строке выдавало ошибку: "переменная цикла for должна описываться в том же цикле".
Добавил "var i:integer;". Вроде перестала.
Begin
Pascal
1
2
3
4
5
6
7
8
9
ClrScr;
//cursoroff;
var i:integer;
For i := 1 to 3 do
begin
    If i = a then TextColor(Red)
    Else TextColor(Black);
    WriteLn(l[i]);
end;
Теперь выдаёт в 90 строке ошибку:"нельзя изменять значение переменной цикла внутри этого цикла", подскажите пожалуйста как исправить
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
For i := 1 to d do
                begin
                    If (x[i] = xp + 4) and (y[i] = yp + 4) then
                    begin
                        While not n[i] do i := i - 1;
                        Repeat
                            x[i] := 0;
                            y[i] := 0;
                            i := i + 1;
                        Until n[i];
                        Break;
                    end;
                end;
            end;
        end;
    end;
0
Эксперт Pascal/Delphi
6546 / 4407 / 4710
Регистрация: 05.06.2014
Сообщений: 21,664
11.04.2015, 11:01 4
Лучший ответ Сообщение было отмечено Sergey1982 как решение

Решение

Sergey1982, надо именно в pabc.net? В простом pabc всё нормально работает.
1
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 8
11.04.2015, 12:40  [ТС] 5
Спасибо. Сейчас попробую.

Добавлено через 18 минут
Спасибо. Вы меня спасли!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2015, 12:40

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Перевод из turbo pascal в abc.net
Помогите адаптировать программу для abc.net из turbo pascal Program transportnaj_zadatsha;...

Перевести код программы с Turbo Pascal в PascalABC
Помогите. Срочно необходимо. Буду очень признателен Uses Graph,Crt; const MaxShar=10; type...

Нужно перевести программу с Turbo Pascal в Pascal ABC.NET
Вот есть программный код , но он для турбо паскаля, помогите перевести его в АБС.NET Program...

Можно как-то переделать код из Turbo Pascal чтобы он работал в pascal abc.net?
Сделайте пожалуйста, я просто не вникаю uses Graph, Crt; var grDriver: integer; grMode:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.