Syntax error expected but found перевод

Ошибка "Syntax Error, ":" expected but ";" found Free Pascal Решение и ответ на вопрос 429619

XpycT36

0 / 0 / 0

Регистрация: 09.01.2012

Сообщений: 6

1

17.01.2012, 01:50. Показов 35843. Ответов 7

Метки нет (Все метки)


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
Unit SourceModMenu;
 
interface
 
Uses Crt;
 
function Menu(X,Y: integer):integer; //Функция для меню
Procedure Menu80; // Процедура для функции Menu. При нажатии стрелкии вверх
Procedure Menu72; // Процедура для функции Menu. При нажатии стрелкии вниз
 
var Choose: integer;
 
implementation
 
var
CurrStr: integer;
strall1: string;
strall2: string;
strall3: string;
 
Function Menu(X,Y: integer;str1,str2,str3: string):integer;
var
key: char;
CucleEnd: boolean;
begin
Clrscr;
CurrStr:=1;
strall1:=str1;
strall2:=str2;
strall3:=str3;
GoToXY(X,Y);
TextColor(Black);
TextBackground(White);
write(str1);
TextColor(White);
TextBackground(Black);
write(str2);
repeat
key:=readkey;
if key=chr(0) then
key:=readkey;
if key=chr(80) then
Menu80;
if key=chr(72) then
Menu72;
if key=chr(13) then
CucleEnd:=true;
until CucleEnd=true;
Menu:=Choose;
end;
 
Function Menu80;
begin
case (CurrStr) of
2:
begin
TextColor(White);
TextBackgroud(Black);
write(strall2);
CurrStr:=CurrStr-1;
TextColor(Black);
TextBackgroud(White);
write(strall1);
end;
3:
begin
TextColor(White);
TextBackgroud(Black);
write(strall3);
CurrStr:=CurrStr-1;
TextColor(Black);
TextBackgroud(White);
write(strall2);
end;
end;
end;
 
Function Menu72;
begin
case (CurrStr) of
1:
begin
TextColor(White);
TextBackgroud(Black);
write(strall1);
CurrStr:=CurrStr+1;
TextColor(Black);
TextBackgroud(White;);
write(strall2);
end;
2:
begin
TextColor(White);
TextBackgroud(Black);
write(strall2);
CurrStr:=CurrStr+1;
TextColor(Black);
TextBackgroud(White);
write(strall3);
end;
end;
end;
 
end.

Помогите плиз
У меня выдает ошибку «Syntax Error, «:» expected but «;» found
Хотя после процедуры «:» ставить не надо.
В чем проблема?

Добавлено через 12 минут
Чуть не забыл. Ошибку выдает в 52 строчке

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

17.01.2012, 01:50

7

Puporev

Почетный модератор

64272 / 47571 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

17.01.2012, 09:02

2

Цитата
Сообщение от XpycT36
Посмотреть сообщение

Хотя после процедуры «:» ставить не надо

Правильно, но какого вы пишете

Pascal
1
2
3
Function Menu80;
.......................
Function Menu72;

пишите Procedure
кроме того по разному объявлено
в интерфейсе

Pascal
1
function Menu(X,Y: integer):integer;

а в исполнительной части

Pascal
1
Function Menu(X,Y: integer;str1,str2,str3: string):integer;

разное количество параметров.
И еще почти везде в

Pascal
1
TextBackgroud(White);

пропущена буква n в ground



0



XpycT36

0 / 0 / 0

Регистрация: 09.01.2012

Сообщений: 6

17.01.2012, 18:33

 [ТС]

3

ой… моя невнимательность. Спасибо

Добавлено через 1 час 59 минут
У меня еще один вопрос

Если вы еще не догадались, я пишу меню.

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
Unit SourceModMenu;
 
interface
 
Uses Crt;
 
function Menu(X,Y: integer;str1,str2,str3: string): integer; //Функция для меню
Procedure Menu80; // Процедура для функции Menu. При нажатии стрелкии вверх
Procedure Menu72; // Процедура для функции Menu. При нажатии стрелкии вниз
 
var Choose: integer;
 
implementation
 
var
CurrStr: integer;
strall1: string;
strall2: string;
strall3: string;
Xall: integer;
Yall: integer;
 
Function Menu(X,Y: integer;str1,str2,str3: string):integer;
var
key: char;
CucleEnd: boolean;
begin
Clrscr;
CurrStr:=1;
CucleEnd:=false;
strall1:=str1;
strall2:=str2;
strall3:=str3;
Xall:=X;
Yall:=Y;
GoToXY(X,Y);
TextColor(White);
TextBackground(Black);
write(str1);
GoToXY(X,Y+1);
TextColor(Black);
TextBackground(White);
write(str2);
GoToXY(X,Y+2);
TextColor(Black);
TextBackground(White);
write(str3);
GoToXY(X,Y);
repeat
begin
key:=Readkey;
if key=chr(0) then
key:=Readkey;
if key=chr(80) then
Menu80;
if key=chr(72) then
Menu72;
if key=chr(13) then
begin
CucleEnd:=true;
Menu:=Choose;
end;
end;
until CucleEnd=true;
end;
 
Procedure Menu72;
begin
case (CurrStr) of
2:
begin
TextColor(White);
TextBackground(Black);
write(strall2);
CurrStr:=CurrStr-1;
TextColor(Black);
TextBackground(White);
GoToXY((Xall-1)+CurrStr,Yall);
write(strall1);
end;
3:
begin
TextColor(White);
TextBackground(Black);
write(strall3);
CurrStr:=CurrStr-1;
TextColor(Black);
TextBackground(White);
GoToXY((Xall-1)+CurrStr,Yall);
write(strall2);
end;
end;
end;
 
Procedure Menu80;
begin
case (CurrStr) of
1:
begin
TextColor(White);
TextBackground(Black);
write(strall1);
CurrStr:=CurrStr+1;
TextColor(Black);
TextBackground(White);
GoToXY((Xall-1)+CurrStr,Yall);
write(strall2);
end;
2:
begin
TextColor(White);
TextBackground(Black);
write(strall2);
CurrStr:=CurrStr+1;
TextColor(Black);
TextBackground(White);
GoToXY((Xall-1)+CurrStr,Yall);
write(strall3);
end;
end;
end;
 
end.

У меня программа рисует меню и закрывается. А если я убираю строчку if key=chr(0) then
то все нормально. Но тут еще появляется проблема. Функции для стрелок «вверх и «вниз» не работают (то есть меню не двигается) , хотя я уже много раз перепроверял, все ровно, не могу найти у себя ошибку.



0



Почетный модератор

64272 / 47571 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

17.01.2012, 19:07

4

Вместо crt напишите wincrt;

Цитата
Сообщение от XpycT36
Посмотреть сообщение

У меня программа рисует меню и закрывается

Ну без программы по одному модулю это не проверить.

Цитата
Сообщение от XpycT36
Посмотреть сообщение

Функции для стрелок «вверх и «вниз» не работают

Попробуй вместо crt написать wincrt



1



XpycT36

0 / 0 / 0

Регистрация: 09.01.2012

Сообщений: 6

18.01.2012, 02:18

 [ТС]

5

Да нет, вы не поняли)) Меню пишу я и функции для стрелок тоже. Я говорю про то что код процедур для стрелок «вверх» «вниз» наверное написан неправильно тк при нажимании на стрелки ничего не происходит. Если что то вот основной код

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Snake 13.01.12
Program Snake;
 
uses Crt, SourceModTitle, SourceModMenu; //Обязательно подключить модули SourceMod!!!
 
var
Game: integer;
 
begin
Options;
Title;
Game:=Menu(2,2,'Start','Options','Quit');
if Game=1 then
begin
 
end;
end.



0



Puporev

Почетный модератор

64272 / 47571 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

18.01.2012, 07:04

6

XpycT36, Ты какой-то безрукий, сейчас программа не запускается потому что нет модуля
SourceModTitle.

Добавлено через 1 минуту
Попробуй написать

Pascal
1
2
3
4
5
6
key:=Readkey;
if key=#0 then
key:=Readkey;
if key=#80 then
Menu80;
if key=#72 then



0



0 / 0 / 0

Регистрация: 03.05.2016

Сообщений: 1

03.05.2016, 16:29

7

Здравствуйте! Объясните пожалуйста как сделать задание не понимаю желательно на примерах

Вложения удалены модератором.



0



Почетный модератор

64272 / 47571 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

03.05.2016, 16:39

8

fdsd223sdsff111, Прочитай Правила форума и подумай. Для каждого задания создай свою тему с адекватным названием и текстом, напечатанным в теме, а не на фотке. Темы создайте в нужном разделе:
Лазарус или Делфи для начинающих.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

03.05.2016, 16:39

Помогаю со студенческими работами здесь

Unit1.pas(51,0) Fatal: Syntax error, «BEGIN» expected but «end of file» found
Вобщем, мне говорят что у меня ошибка в несуществующей строке.
Пишет мне вот это; unit1.pas(51,0)…

Fatal:syntax error,»UNTIL» expected but «indentifier RESET» found
Написала программы а компилятор выдает ошибку что делать??

program lab6;
uses crt;
type

Ошибка: «sintax error, «OF» expected, but «[» found»
Здравствуйте, в 4 строке компилятор выдаёт ошибку: "sintax error, "OF" expected, but "var…

Syntax error, «:» expected but «(» found
Блин решаю задачу и тут выпала ошибка ‘Syntax error, ":" expected but "(" found’ незнаю как решить…

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

Или воспользуйтесь поиском по форуму:

8

Содержание

  1. Syntax error expected but found перевод
  2. Re: Ошибка в коде программы!
  3. Re: Ошибка в коде программы!
  4. Re: Ошибка в коде программы!
  5. Re: Ошибка в коде программы!
  6. Re: Ошибка в коде программы!
  7. Re: Ошибка в коде программы!
  8. Re: Ошибка в коде программы!
  9. Почему выдаёт ошибку? Где я накосячила? Ошибка: unit1.pas(120,5) Fatal: Syntax error, «;» expected but «ELSE» found
  10. Syntax error expected but found перевод
  11. Re: Ошибка в коде программы!
  12. Re: Ошибка в коде программы!
  13. Re: Ошибка в коде программы!
  14. Re: Ошибка в коде программы!
  15. Re: Ошибка в коде программы!
  16. Re: Ошибка в коде программы!
  17. Re: Ошибка в коде программы!
  18. Syntax error expected but found перевод
  19. Re: Syntax error, «UNIT» expected but «USES» found
  20. Re: Syntax error, «UNIT» expected but «USES» found
  21. Re: Syntax error, «UNIT» expected but «USES» found
  22. Re: Syntax error, «UNIT» expected but «USES» found
  23. Re: Syntax error, «UNIT» expected but «USES» found
  24. Re: Syntax error, «UNIT» expected but «USES» found
  25. Re: Syntax error, «UNIT» expected but «USES» found
  26. Re: Syntax error, «UNIT» expected but «USES» found
  27. Отладка и выполнение программы

Syntax error expected but found перевод

Анна Бак » 27.10.2014 17:40:51

Re: Ошибка в коде программы!

Дож » 27.10.2014 18:07:56

Видимо, проблема в том, что Вы отсканировали текст и не почистили от фигни.

Вместо короткого тире − должен знак минус -,
вместо обратной кавычки ’ — знак апострофа ‘.

Re: Ошибка в коде программы!

Анна Бак » 27.10.2014 20:02:42

Дож писал(а): Видимо, проблема в том, что Вы отсканировали текст и не почистили от фигни.

Вместо короткого тире − должен знак минус -,
вместо обратной кавычки ’ — знак апострофа ‘.

Я отсканировала текст только для того, чтобы задать вопрос.
А в Free Pascal вводила все в ручную и все знаки переписывала уже несколько раз, ничего не помогает.

Re: Ошибка в коде программы!

Little_Roo » 27.10.2014 20:40:10

Re: Ошибка в коде программы!

Анна Бак » 27.10.2014 21:35:18

Re: Ошибка в коде программы!

Little_Roo » 27.10.2014 21:38:27

Re: Ошибка в коде программы!

Анна Бак » 27.10.2014 22:11:59

Re: Ошибка в коде программы!

Дож » 27.10.2014 23:28:21

Дож писал(а): Видимо, проблема в том, что Вы отсканировали текст и не почистили от фигни.

Вместо короткого тире − должен знак минус -,
вместо обратной кавычки ’ — знак апострофа ‘.

Я отсканировала текст только для того, чтобы задать вопрос.
А в Free Pascal вводила все в ручную и все знаки переписывала уже несколько раз, ничего не помогает.

Источник

Почему выдаёт ошибку? Где я накосячила? Ошибка: unit1.pas(120,5) Fatal: Syntax error, «;» expected but «ELSE» found

procedure TForm1.RadioButton1Change(Sender: TObject);
begin
if radiobutton1.checked then
begin
edit1.text := IntToStr(Bin2Dec(edit1.text));
CS := 10;
s:=edit1.text
end;
else begin
edit1.text := IntToStr(Oct2Dec(edit1.text));
CS := 10;
s:=edit1.text;

Button1.Enabled:=True;
Button2.Enabled:=True;
Button3.Enabled:=True;
Button4.Enabled:=True;
Button5.Enabled:=True;
Button6.Enabled:=True;
Button7.Enabled:=True;
Button8.Enabled:=True;
Button9.Enabled:=True;
Button10.Enabled:=True;
Button11.Enabled:=True;
Button12.Enabled:=True;
Button13.Enabled:=True;
Button15.Enabled:=True;
Button16.Enabled:=True;
Button17.Enabled:=True;
Button18.Enabled:=True;
Button14.Enabled:=True;
Button19.Enabled:=True;
Button20.Enabled:=True;
Button21.Enabled:=True;
Button22.Enabled:=True;
Button23.Enabled:=True;
end;

—-исходный кусок ————
CS := 10;
s:=edit1.text
end;
else begin
————неправильно, д. б. так ——————-
CS := 10;
s:=edit1.text;
end
else begin

З. Ы. внимательнее с синтаксисом. лучше код форматировать отступами, вроде так:
begin
begin
.
end;
end;
сразу ясно какой энд какому бегину принадлежит )))

Источник

Syntax error expected but found перевод

Анна Бак » 27.10.2014 17:40:51

Re: Ошибка в коде программы!

Дож » 27.10.2014 18:07:56

Видимо, проблема в том, что Вы отсканировали текст и не почистили от фигни.

Вместо короткого тире − должен знак минус -,
вместо обратной кавычки ’ — знак апострофа ‘.

Re: Ошибка в коде программы!

Анна Бак » 27.10.2014 20:02:42

Дож писал(а): Видимо, проблема в том, что Вы отсканировали текст и не почистили от фигни.

Вместо короткого тире − должен знак минус -,
вместо обратной кавычки ’ — знак апострофа ‘.

Я отсканировала текст только для того, чтобы задать вопрос.
А в Free Pascal вводила все в ручную и все знаки переписывала уже несколько раз, ничего не помогает.

Re: Ошибка в коде программы!

Little_Roo » 27.10.2014 20:40:10

Re: Ошибка в коде программы!

Анна Бак » 27.10.2014 21:35:18

Re: Ошибка в коде программы!

Little_Roo » 27.10.2014 21:38:27

Re: Ошибка в коде программы!

Анна Бак » 27.10.2014 22:11:59

Re: Ошибка в коде программы!

Дож » 27.10.2014 23:28:21

Дож писал(а): Видимо, проблема в том, что Вы отсканировали текст и не почистили от фигни.

Вместо короткого тире − должен знак минус -,
вместо обратной кавычки ’ — знак апострофа ‘.

Я отсканировала текст только для того, чтобы задать вопрос.
А в Free Pascal вводила все в ручную и все знаки переписывала уже несколько раз, ничего не помогает.

Источник

Syntax error expected but found перевод

alexmlw » 15.01.2011 16:52:17

при компилировании выскакивает ошибка «Syntax error, «UNIT» expected but «USES» found»

Добавлено спустя 27 минут 41 секунду:
эту ошибку исправил но вместо нее теперь другая Can’t find unit Graph used by Program как ее исправить?

Re: Syntax error, «UNIT» expected but «USES» found

Nik » 15.01.2011 18:02:56

Re: Syntax error, «UNIT» expected but «USES» found

Little_Roo » 15.01.2011 18:03:43

alexmlw писал(а): при компилировании выскакивает ошибка «Syntax error, «UNIT» expected but «USES» found»

Добавлено спустя 27 минут 41 секунду:
эту ошибку исправил но вместо нее теперь другая Can’t find unit Graph used by Program как ее исправить?

Re: Syntax error, «UNIT» expected but «USES» found

alexmlw » 15.01.2011 18:20:44

Re: Syntax error, «UNIT» expected but «USES» found

Vadim » 15.01.2011 20:17:56

Re: Syntax error, «UNIT» expected but «USES» found

alexmlw » 15.01.2011 23:39:32

тоже самое ток вместо graph ругается на ggigraph

Re: Syntax error, «UNIT» expected but «USES» found

Иван Шихалев » 15.01.2011 23:46:08

Re: Syntax error, «UNIT» expected but «USES» found

trius-strannik » 15.01.2011 23:49:21

Re: Syntax error, «UNIT» expected but «USES» found

alexmlw » 15.01.2011 23:53:42

#
# Example fpc.cfg for Free Pascal Compiler
#

#
# nested #IFNDEF, #IFDEF, #ENDIF, #ELSE, #DEFINE, #UNDEF are allowed
#
# -d is the same as #DEFINE
# -u is the same as #UNDEF
#

#
# Some examples (for switches see below, and the -? helppages)
#
# Try compiling with the -dRELEASE or -dDEBUG on the commandline
#

# For a release compile with optimizes and strip debuginfo
#IFDEF RELEASE
-O2
-Xs
#WRITE Compiling Release Version
#ENDIF

# For a debug version compile with debuginfo and all codegeneration checks on
#IFDEF DEBUG
-g
-Crtoi
#WRITE Compiling Debug Version
#ENDIF

# set binutils prefix

#IFNDEF CPUI386
#IFNDEF CPUAMD64
#DEFINE NEEDCROSSBINUTILS
#ENDIF
#ENDIF

#IFNDEF linux
#DEFINE NEEDCROSSBINUTILS
#ENDIF

#IFDEF FPC_CROSSCOMPILING
#IFDEF NEEDCROSSBINUTILS
-XP$fpctarget-
#ENDIF NEEDCROSSBINUTILS
#ENDIF

# assembling
#ifdef darwin
# use pipes instead of temporary files for assembling
-ap
#endif

# Pascal language mode
# -Mfpc free pascal dialect (default)
# -Mobjfpc switch some Delphi 2 extensions on
# -Mdelphi tries to be Delphi compatible
# -Mtp tries to be TP/BP 7.0 compatible
# -Mgpc tries to be gpc compatible
# -Mmacpas tries to be compatible to the macintosh pascal dialects
#
# Turn on Object Pascal extensions by default
#-Mobjfpc

# Assembler reader mode
# -Rdefault use default assembler
# -Ratt read AT&T style assembler
# -Rintel read Intel style assembler
#
# All assembler blocks are AT&T styled by default
#-Ratt

# Semantic checking
# -S2 same as -Mobjfpc
# -Sc supports operators like C (*=,+=,/= and -=)
# -Sa include assertion code.
# -Sd same as -Mdelphi
# -Se error options. is a combination of the following:
# : compiler stops after the errors (default is 1)
# w : compiler stops also after warnings
# n : compiler stops also after notes
# h : compiler stops also after hints
# -Sg allow LABEL and GOTO
# -Sh Use ansistrings
# -Si support C++ styled INLINE
# -Sk load fpcylix unit
# -SI set interface style to
# -SIcom COM compatible interface (default)
# -SIcorba CORBA compatible interface
# -Sm support macros like C (global)
# -So same as -Mtp
# -Sp same as -Mgpc
# -Ss constructor name must be init (destructor must be done)
# -St allow static keyword in objects
# -Sx enable exception keywords (default in Delphi/ObjFPC modes)
#
# Allow goto, inline, C-operators, C-vars
-Sgic

# Uncomment the next line if you always want static/dynamic units by default
# (can be overruled with -CD, -CS at the commandline)
#-CS
#-CD

# Set the default heapsize to 8Mb
#-Ch8000000

# Set default codegeneration checks (iocheck, overflow, range, stack)
#-Ci
#-Co
#-Cr
#-Ct

# Optimizer switches
# -Os generate smaller code
# -O1 level 1 optimizations (quick optimizations, debuggable)
# -O2 level 2 optimizations (-O1 + optimizations which make debugging more difficult)
# -O3 level 3 optimizations (-O2 + optimizations which also may make the program slower rather than faster)
# -Op set target cpu for optimizing, see fpc -i for possible values
#
# See «fpc -i» also for more fine-grained control over which optimizations
# to perform

#ifdef darwin
#ifdef cpui386
-Cppentiumm
-Oppentiumm
#endif
#endif

# Slashes are also allowed under dos

# path to the messagefile, not necessary anymore but can be used to override
# the default language
#-Fr/usr/lib/fpc/$fpcversion/msg/errore.msg
#-Fr/usr/lib/fpc/$fpcversion/msg/errorn.msg

#IFDEF FPCAPACHE_1_3
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/httpd13/
#ELSE
#IFDEF FPCAPACHE_2_0
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/httpd20
#ELSE
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/httpd22
#ENDIF
#ENDIF

# searchpath for units and other system dependent things
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl
#-Fu

# searchpath for libraries
#ifdef cpux86_64
-Fl/usr/lib/gcc/x86_64-linux-gnu/4.4.5
#endif

# generate always debugging information for GDB (slows down the compiling
# process)
# -gc generate checks for pointers
# -gd use dbx
# -gg use gsym
# -gh use heap trace unit (for memory leak debugging)
# -gl use line info unit to show more info for backtraces
# -gv generates programs tracable with valgrind
# -gw generate dwarf debugging info
#
# Enable debuginfo and use the line info unit by default
#-gl

# always pass an option to the linker
#-k-s

# Always strip debuginfo from the executable
-Xs

Источник

Отладка и выполнение программы

После того, как программа набрана и поставлена заключительная точка после слова end, ее необходимо оттранслировать, устранить ошибки, как синтаксические, так и семантические, и выполнить, то есть получить конечный результат.

После набора программы ее рекомендуется записать на диск. Более того, если текст программы достаточно объемен, лучше всего делать и промежуточные записи во избежание потери информации при сбоях компьютера или пропадании напряжения питания.

Если программа набирается заново, то есть активное окно имеет имя noname01.pas, то при нажатии клавиши F2 выполнится команда File/ Save as. При этом появится диалоговое окно со списком файлов – программ из текущего раздела, с именами Files, как на рис.2.6.

Рис. 2.6. Сохранение программы в Free Pascal.

В окне Name набирается имя файла, с которым он будет сохранен на диске. Имя автоматически будет дополнено расширением .pas. После записи на диск имя в текущем окне редактора сменится на заданное в поле Name. После дальнейшего набора программы или ее корректировки при нажатии клавиши F2 будет выполняться команда File/ Save, и никаких дополнительных запросов происходить не будет.

При переходе к новой программе окно с текстом старой программы закрывают ( или Window / Close, хотя это и не обязательно) и открывают новое активное окно (File / New). При необходимости чтения другой, ранее набранной программы, выполняется команда File / Open. (F3), в появляющемся диалоговом окне в области Files перемещением маркера выбирается нужный файл и нажимается клавиша Enter, эквивалентная кнопке диалогового окна Open.

После ввода программы ее можно откомпилировать с целью устранения ошибок ( ). Если программа не сохранена, то при компиляции возникнет диалоговое окно как при сохранении программы. Если компилятор обнаружил синтаксические ошибки, то появится сообщение, представленное на рис.2.7.

Рис. 2.7. Сообщение о наличии в программе синтаксических ошибок.

После того, как все ошибки устранены, появится следующее сообщение, как на рис. 2.8.: «Компиляция выполнена: нажмите любую клавишу».

Рис. 2.8. Компиляция завершена успешно.

После ввода всей программы ее можно либо откомпилировать, либо сразу отдать команду на выполнение ( ). В последнем случае все равно выполнится предварительная компиляция, и если присутствуют синтаксические ошибки, программа выполняться не будет. Если программа не сохранена, то при компиляции возникнет диалоговое окно как при сохранении программы.

Все ошибки программ делятся на два больших класса: ошибки компиляции (синтаксические) и ошибки выполнения (логические или алгоритмические). О первом типе ошибок сообщает компилятор до запуска программы на выполнение с указанием типа ошибки и предполагаемого ее места. К сожалению, ошибка может быть и не там, где стоит курсор; его положение – это фактически то место, где компилятор «осознает» ошибку. Например, если имеется лишний BEGIN в программе, то компилятор не поймет этого до тех пор, пока пары BEGIN. END не будут сбалансированы. На начальном этапе программирования большинство синтаксических ошибок происходит из-за невнимательности набора программы. Даже в первой строке могут делаться ошибки, см. рис.2.9.

Рис. 2.9. Ошибка в служебном слове

В первой строке сообщений компилятора появится сообщение: «Prim1.pas(1,9) Fatal: Syntax error, “BEGIN” expected but “identifier PROGRAMM” found».

Здесь Prim1.pas – имя программы, данное ей при записи на диск.

(1,9) – место, где обнаружена ошибка (строка, столбец). Не всегда совпадает с реальным местом ошибки.

Fatal: Syntax error – синтаксическая ошибка фатальная, дальнейшее выполнение невозможно.

“BEGIN” expected but “identifier PROGRAMM” found — ожидается BEGIN, но найден идентификатор PROGRAMM. Первое обязательное служебное слово – Begin, все остальные: заголовок, разделы описаний, можно и не писать. Все конструкции языка Паскаль, которые состоят из букв и цифр и начинаются с буквы, являются идентификаторами, за исключением служебных слов и некоторых директив. Так как слово PROGRAMM к служебным не относится, то оно определено как идентификатор, с которого не должна начинаться программа.

В данном примере пояснение причины ошибки не имеет особого смысла, – ожидается оператор BEGIN, – и такое случается довольно часто. Более осмысленное толкование происходит в следующем случае:

«Prim1.pas(1,14) Fatal: Syntax error, ”;”expected but “ordinal const” found» – перед порядковой константой (единицей) ожидается точка с запятой.

Смысл ошибки заключается в том, что имя программы, как и обычные идентификаторы, не должно включать пробелы, поэтому за разделителем, – пробелом, должна идти следующая конструкция языка, отделяемая от заголовка точкой с запятой.

Довольно часто позиция указывается в строке, следующей за ошибочной:

Точка с запятой должна стоять перед А, то есть в конце предыдущей строки.

В любом случае при непонимании ошибки следует обратиться к синтаксису отмеченной конструкции языка Турбо Паскаль, либо к предыдущей.

Ошибки выполнения появляются после компиляции и запуска программы на выполнение. На экране программы выдается сообщение вида, представленного на рис.2.10.

Рис. 2.10. Сообщение с кодом завершения 201.

Ошибки выполнения искать труднее, чем синтаксические. Это и ошибки на уровне ОС, и ошибки ввода — вывода, и критические ошибки, и фатальные ошибки. Но, хотя ошибок данного класса довольно много, в данном курсе лабораторных работ чаще всего появляются только три фатальные ошибки:

Exitcode = 200 – Деление на нуль.

Exitcode = 201 – превышение времени выполнения программой.

Exitcode = 207 – переполнение при операции с плавающей точкой.

Вообще говоря, комментарии к первой и последней ошибкам не требуют дополнительных пояснений. Хотя они могут случаться не только при недопустимых делениях и вышедших из под контроля циклах операций умножения, но в данных лабораторных работах гораздо чаще встречаются при недопустимых аргументах математических функций: отрицательных значениях для логарифмов, квадратных корней, и других.

Ошибки же по времени выполнения (зацикливания компьютера) возникают либо при неверно составленном алгоритме, а соответственно, и программе, либо при выходе за границы неконтролируемых величин. Так как циклы могут использовать 2 типа операторов, то в цикле FOR категорически запрещено принудительное изменение параметра цикла, так как он изменяется автоматически. В циклах While и Repeat, наоборот обязательно надо изменять параметр цикла принудительно, иначе он останется без изменения. В бесконечных циклах каждое последующее слагаемое должно уменьшаться. Пример последней ситуации приведен в примечании к лабораторной работе № 4.

ИСР Free Pascal имеет два экрана. На основном экране набираются, просматриваются и редактируются программы, отдаются команды ИСР, устанавливаются параметры работы и так далее. Но при запуске программы появляется другой экран – экран пользователя. Сюда помещаются результаты работы по программе, и он виден до тех пор, пока программа не перестанет выполняться. Так как в данном курсе лабораторных работ программы весьма просты, то они выполняются практически мгновенно, и снова появляется основной экран ИСР. Для просмотра экрана пользователя из меню выбирается Debug > User screen или нажимается комбинация клавиш .Для возврата к основному экрану можно нажать любую клавишу. Если в процессе запуска программы возникнет необходимость прервать ее работу, например в случае «зацикливания» программы, используют комбинацию клавиш .

На экране пользователя мы увидим либо сообщение об ошибке выполнения, либо результат (если пропущен оператор вывода, естественно, вывода результата не будет), например, как на рис.2.11.

Рис. 2.11. Результат по нажатию клавиш .

Здесь нам нужна только последняя строка:

Результат может быть и неверным как из-за неправильно составленного алгоритма, так и из-за ошибок в программе, которые формально, с точки зрения транслятора, ошибками не являются. Например, при вычислении суммы по следующему фрагменту программы

For I:=1 to 10 do;

результат вычислений будет равен 0.10000. Здесь после служебного слова DO стоит пустой оператор, поэтому именно он, то есть «ничто» будет выполняться десять раз. Затем к нулю прибавится одна десятая. Формально программа составлена правильно, и такую конструкцию иногда используют в качестве задержки по времени, но фактически десять раз должен выполняться оператор из третьей строки.

Конкретные рекомендации в таких случаях являются индивидуальными для каждой программы, существуют только общие методы тестирования. Рассмотрим два самых простейших.

Первый метод самый универсальный и может использоваться с любыми языками программирования, трансляторами и ассемблерами. Заключается он в выводе промежуточных результатов. Внутрь цикла, или в «подозрительные» места программы временно вставляются операторы вывода изменяемых переменных. Например, программа (приведен фрагмент)

For i:=1 to 15 do

просто «зацикливается» (если не используются директивы контроля). Но если перед i:=i+1 поставить оператор

то после запуска программы появятся два столбика бегущих чисел. Если приостановить вывод информации на экран монитора клавишей Pause, то сразу будет видно, что i изменяется не с шагом 1, а 2. То есть параметр цикла изменяется и в операторе For, и в операторе присваивания.

Второй метод привлекает средства отладки ИСР. Предварительно установив программный счетчик на начало программы (Run > Program reset или ), открывается окно наблюдаемых переменных (Debug > Add Watch или ): в Watch-окне набирается имя первой контролируемой переменной, нажимается Enter. После этого появляется окно с именем Watches и значением этой переменной. Добавление переменных в окно выполняется необходимое количество раз. Для пооператорного выполнения программы предназначена «горячая» клавиша F7 (Run > Trace into). После каждого нажатия клавиши F7 выполняется один оператор. Если он производит изменение значения переменной, то это сразу отразится в окне наблюдения.

Таким образом, анализируя изменение значений переменных при пооператорном выполнении программы, легко найти ошибку в алгоритме, и соответственно в программе.

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим.

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ — конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой.

Источник

source.pas(5,1) Fatal: Syntax error,

  • Текст
  • Веб-страница

source.pas(5,1) Fatal: Syntax error, «:» expected but «BEGIN» found

0/5000

Результаты (русский) 1: [копия]

Скопировано!

Неустранимая ошибка Source.pas(5,1): синтаксическая ошибка, «:» ожидалось, но «BEGIN» найдено

переводится, пожалуйста, подождите..

Результаты (русский) 2:[копия]

Скопировано!

source.pas (5,1) Fatal: Ошибка синтаксиса «:» как ожидается, но «BEGIN» найдено

переводится, пожалуйста, подождите..

Результаты (русский) 3:[копия]

Скопировано!

источник сса (5,1). со смертельным исходом: ошибка, «:» ожидается, но «начать»

переводится, пожалуйста, подождите..

Другие языки

  • English
  • Français
  • Deutsch
  • 中文(简体)
  • 中文(繁体)
  • 日本語
  • 한국어
  • Español
  • Português
  • Русский
  • Italiano
  • Nederlands
  • Ελληνικά
  • العربية
  • Polski
  • Català
  • ภาษาไทย
  • Svenska
  • Dansk
  • Suomi
  • Indonesia
  • Tiếng Việt
  • Melayu
  • Norsk
  • Čeština
  • فارسی

Поддержка инструмент перевода: Клингонский (pIqaD), Определить язык, азербайджанский, албанский, амхарский, английский, арабский, армянский, африкаанс, баскский, белорусский, бенгальский, бирманский, болгарский, боснийский, валлийский, венгерский, вьетнамский, гавайский, галисийский, греческий, грузинский, гуджарати, датский, зулу, иврит, игбо, идиш, индонезийский, ирландский, исландский, испанский, итальянский, йоруба, казахский, каннада, каталанский, киргизский, китайский, китайский традиционный, корейский, корсиканский, креольский (Гаити), курманджи, кхмерский, кхоса, лаосский, латинский, латышский, литовский, люксембургский, македонский, малагасийский, малайский, малаялам, мальтийский, маори, маратхи, монгольский, немецкий, непальский, нидерландский, норвежский, ория, панджаби, персидский, польский, португальский, пушту, руанда, румынский, русский, самоанский, себуанский, сербский, сесото, сингальский, синдхи, словацкий, словенский, сомалийский, суахили, суданский, таджикский, тайский, тамильский, татарский, телугу, турецкий, туркменский, узбекский, уйгурский, украинский, урду, филиппинский, финский, французский, фризский, хауса, хинди, хмонг, хорватский, чева, чешский, шведский, шона, шотландский (гэльский), эсперанто, эстонский, яванский, японский, Язык перевода.

  • Я ТВОЮ МАМУ ЕБАЛ
  • тысяча девятьсот шестьдесят первый
  • a partnership is an association of two o
  • Мой любимый вид спорта — это танцы. Это
  • nicer than
  • Мой любимый вид спорта — это танцы. Это
  • What form are you in??
  • электричка
  • wieder ist Alexander in der BRD! Diesmal
  • how old are you
  • What form are you in??
  • pueros et puellas
  • На набережной
  • BIRTH OF CHEMISTRY
  • бегло владеть испанским
  • Мне фото твое любить?
  • a partnership is an association of two o
  • Welche Opern haben Sie sich im Bolschoi-
  • Don’t trust anyone
  • nucleus et cortex lentis
  • нет, очень мало
  • Ты должен учиться понимать устную речь !
  • текущий счет
  • Give yourself plenty of time to do revis

Ошибка в коде программы!

Модератор: Модераторы

Ошибка в коде программы!

Всем доброго времени суток.
В книге Алексеев Е. Р., Чеснокова О. В., Кучер Т. В. — Free Pascal и Lazarus(2010), есть пример такой программы:

Код: Выделить всё
var a, b, c, d, x1, x2: real;
begin
writeln (’Введите_коэффициенты_квадратного_уравнения’);
readln (a, b, c);
d:=b*b−4*a*c;
if d<0 then
begin
//Если дискриминант отрицателен, то вывод сообщения,
//что действительный корней нет и вычисление комплексных корней.
writeln (’Действительных_корней_нет’);
{Вычисление действительной части комплексных корней.}
x1:=−b/(2*a);
{Вычисление модуля мнимой части комплексных корней.}
x2:=sqrt(abs(d))/(2*a);
writeln ( ’Комплексные_корни_уравнения_’,
a:1:2, ’x^2+’ ,b:1:2, ’x+’ ,c:1:2, ’=0’ );
{Вывод значений комплексных корней в виде x1±ix2}
writeln (x1:1:2, ’+i*(’ ,x2:1:2, ’)’);
writeln (x1:1:2, ’−i*(’ ,x2:1:2, ’)’);
end
else
begin
{иначе вычисление действительных корней x1, x2}
x1:=(−b+sqrt(d))/2/a;
x2:=(−b−sqrt(d))/(2*a);
{и вывод их на экран.}
writeln ( ’Действительные_корни_уравнения_’ ,
a:1:2, ’x^2+’ ,b:1:2, ’x+’ ,c:1:2, ’=0’);
writeln (’X1=’ ,x1:1:2, ’X2=’ ,x2:1:2)
end end.

Когда я начинаю компилировать программу выходить такое сообщение об ошибке:
Fatal: Syntax error, «)» expected but «identifier B» found.
Не могу найти где эта ошибка
КТО-НИБУДЬ, ПОДСКАЖИТЕ!!!

Анна Бак
новенький
 
Сообщения: 13
Зарегистрирован: 11.02.2014 13:23:09

Re: Ошибка в коде программы!

Сообщение Дож » 27.10.2014 18:07:56

Видимо, проблема в том, что Вы отсканировали текст и не почистили от фигни.

Вместо короткого тире − должен знак минус -,
вместо обратной кавычки ’ — знак апострофа ‘.

Аватара пользователя
Дож
энтузиаст
 
Сообщения: 891
Зарегистрирован: 12.10.2008 16:14:47

Re: Ошибка в коде программы!

Сообщение Анна Бак » 27.10.2014 20:02:42

Дож писал(а):Видимо, проблема в том, что Вы отсканировали текст и не почистили от фигни.

Вместо короткого тире − должен знак минус -,
вместо обратной кавычки ’ — знак апострофа ‘.

Я отсканировала текст только для того, чтобы задать вопрос.
А в Free Pascal вводила все в ручную и все знаки переписывала уже несколько раз, ничего не помогает.

Анна Бак
новенький
 
Сообщения: 13
Зарегистрирован: 11.02.2014 13:23:09

Re: Ошибка в коде программы!

Сообщение Little_Roo » 27.10.2014 20:40:10

какая строка с ошибкой?

Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 632
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: Ошибка в коде программы!

Сообщение Анна Бак » 27.10.2014 21:35:18

Little_Roo писал(а):какая строка с ошибкой?

В этом-то и проблема. Я не могу найти строчку с ошибкой.
Полный текст ошибки такой:
Zero.pas (15,12) Fatal: Syntax error, «)» expected but «identifier B» found.

Анна Бак
новенький
 
Сообщения: 13
Зарегистрирован: 11.02.2014 13:23:09

Re: Ошибка в коде программы!

Сообщение Little_Roo » 27.10.2014 21:38:27

Анна Бак писал(а):Zero.pas (15,12

Таки строка 15, позиция 12…. :shock:
Но это в ПОЛНОМ тексте кода программы….

Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 632
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: Ошибка в коде программы!

Сообщение Анна Бак » 27.10.2014 22:11:59

Little_Roo писал(а):Таки строка 15, позиция 12…. :shock:
Но это в ПОЛНОМ тексте кода программы….

СПАСИБО БОЛЬШОЕ!!! :D :D :D

Анна Бак
новенький
 
Сообщения: 13
Зарегистрирован: 11.02.2014 13:23:09

Re: Ошибка в коде программы!

Сообщение Дож » 27.10.2014 23:28:21

Анна Бак писал(а):

Дож писал(а):Видимо, проблема в том, что Вы отсканировали текст и не почистили от фигни.

Вместо короткого тире − должен знак минус -,
вместо обратной кавычки ’ — знак апострофа ‘.

Я отсканировала текст только для того, чтобы задать вопрос.
А в Free Pascal вводила все в ручную и все знаки переписывала уже несколько раз, ничего не помогает.

Разумно приводить на форуме именно неработающий код, потому что приведённый в первом посте после замены указанных мною символов на правильные благополучно компилируется и запускается.

Аватара пользователя
Дож
энтузиаст
 
Сообщения: 891
Зарегистрирован: 12.10.2008 16:14:47

Re: Ошибка в коде программы!

Сообщение Анна Бак » 28.10.2014 13:48:34

Дож писал(а):Разумно приводить на форуме именно неработающий код, потому что приведённый в первом посте после замены указанных мною символов на правильные благополучно компилируется и запускается.

Спасибо. Постараюсь.

Анна Бак
новенький
 
Сообщения: 13
Зарегистрирован: 11.02.2014 13:23:09


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

На чтение 2 мин. Просмотров 23 Опубликовано 15.12.2019

readln (‘p’);
чтение строки — это шикарно

writeln (‘Найти площадь прямоугольника’);
вывели текст после — логика на высоте

p=h*v;
плевать, что считали, правда h и v — не определены

h=20;
v=30;
о да, логика та же, надо определить h,v

can any one fix this?

write(‘Enter a selection(10,20,30,40):’);

writeln(’10 was selected’);

writeln(’20 was selected’);

writeln(’30 was selected’);

writeln(’40 was selected’);

writeln(‘something else was selected’);

Содержание

  1. 5 Answers
  2. Primary tabs
  3. Forums:

5 Answers

I don’t know any Pascal, but isn’t the problem obvious? Read your own title: you have a syntax error where you have accidentally used a fullstop where you should have used a semicolon. Look at the last line of your code. I assume you should have used a semicolon instead of a full stop to get:

Also, syntax errors would be less frequent if you used a code editor which had support for syntax highlighting so it would be more obvious where the syntax of your code is incorrect.

You have too few ends. The case-statement contains a number of items each wrapped in their own begin-end pair, the penultimate end is the end of one such pair. The last end in your code is the end that matches the start of the case-statement.

The compiler is expecting to see and end that matches the begin that comprises the body of the program, but it encounters a . instead.

So amazed that I found this topic already answered! Its like you’ve read my thoughts!

I was wondering the same thing too yesterday

Primary tabs

Forums:

При создании программы на Паскаль или Делфи может возникать такая ошибка:

unit1.pas(1,1) Fatal: Syntax error, «UNIT» expected but «PROGRAM» found

возникает для программы в lazarus delphi в случае, если вы используете неверный для консольного приложения тип проекта.

Понравилась статья? Поделить с друзьями:
  • Syntax error expected but found паскаль
  • Syntax error expected but found pascal
  • Syntax error expected but for found
  • Syntax error expected but const real found
  • Syntax error expected an indented block