Syntax error identifier expected but var found

can someone say to me, where is error due to I cant compile the program? Thanks. This is error description: Compiling main.pas main.pas(4,1) Error: Illegal expression main.pas(4,6) Fatal: Syntax er...

can someone say to me, where is error due to I cant compile the program? Thanks. This is error description:

Compiling main.pas
main.pas(4,1) Error: Illegal expression
main.pas(4,6) Fatal: Syntax error, ";" expected but "identifier A" found
Fatal: Compilation aborted
Error: /usr/bin/ppcx64 returned an error exitcode (normal if you did not specify a source file to be compiled)

Program source code:

    program Hello;
begin

type a = array [1..6] of integer;
integer a : array;

a[1]:=2;
a[2]:=6;
a[3]:=4;
a[4]:=2;
a[5]:=4;
a[6]:=3;

n:=6;

x:=a[1];

for i:=2 to 6 do
begin
{
  if (a[i-1]>=x) then
  begin
  a[i]:=a[i] - x div 2;
  end;
  else 
  begin
  a[i]:=a[i] + x;
  x:= x + mod x(a[i] + 1);
  end;
}
end;


  writeln (a[i]);
end.

    ```

blami's user avatar

blami

6,2101 gold badge22 silver badges28 bronze badges

asked Jan 17, 2021 at 2:50

Tomáš Tesařík's user avatar

0

Compiler is complaining about unexpected token.

First problem is that keyword begin is misplaced (as Loren Pechtel pointed out) and compiler treats your type definition and variables declaration as code. begin should be where your program logic starts. See this tutorial to understand TurboPascal program structure.

Another problem is in definition of array type. First you need to create type and name it using identifier (hexad in my example below). That identifier then becomes a type name such as integer so you can use it for further var declarations. Here is another tutorial on TurboPascal array types.

type
   hexad = array [1..6] of integer;

and then you can declare a variable of that type (hexad in my case):

var
   a: hexad;

Note that you can have more types defined under keyword type and more variables under keyword var so it is a good practice to keep them on separate line and indent type definitions and variable declarations.

answered Jan 17, 2021 at 3:20

blami's user avatar

blamiblami

6,2101 gold badge22 silver badges28 bronze badges

In addition to the declaration problem that blami pointed out you have the begin in the wrong place—your definitions are being treated as code, not variables.

Don’t put too much faith in the compiler’s error messages, it often says things that aren’t related to the error at all. It’s very good about pointing to where the error is, though (other than when you failed to close something, then the where can be crazy.)

answered Jan 17, 2021 at 3:23

Loren Pechtel's user avatar

Loren PechtelLoren Pechtel

8,8773 gold badges33 silver badges45 bronze badges

stkapler

0 / 0 / 0

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

Сообщений: 19

1

07.02.2018, 04:52. Показов 22776. Ответов 14

Метки delphi, lazarus, pascal (Все метки)


звучит задание: создай программу, в которой можно преподнести введенное пользователем число к указанному степеню.

покапавшись на всяких форумах и тп, написал код. вроде бы все ок. но при компиляции выдает ошибку в 41 строке unit1.pas(42,17) Fatal: Syntax error, «;» expected but «.» found

ниже код:

Delphi
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
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    E1: TEdit;
    E2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
  x, n, y: extended;
 
implementation
              function Power(const Base, Exponent: Extended): Extended;
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
begin;
   x:=strtofloat(e1.text);
   n:=strtofloat(e2.text);
   y:=Power(n, x);
   label2.caption:=floattostrf(s, ffFixed, 5,2);
end;
 
end.

ps. уже сам нашел несколько ошибок, но все равно проблема осталась

Добавлено через 8 минут
*СТРОКА 37, А НЕ 41

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



0



Programming

Эксперт

94731 / 64177 / 26122

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

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

07.02.2018, 04:52

Ответы с готовыми решениями:

Ошибка «project1.lpr(35,0) Fatal: Syntax error, «BEGIN» expected but «end of file» found»
type
tarray= array of integer;
var
a:tarray;
m,s,k:integer;
procedure…

Ошибка: project1.lpr(1,1) Fatal: Syntax error, «BEGIN» expected but «end of file» found
project1.lpr(1,1) Fatal: Syntax error, "BEGIN" expected but "end of file" found
выдает эту ошибку…

Ошибка: Fatal: Syntax error, «;» expected but «identifier Mas» found.
Где здесь синтаксическая ошибка( "mas:=A2;" )?

procedure TForm1.Button1Click(Sender: TObject);

Ошибка Fatal: Syntax error, «;» expected but «is» found
Не могу нигде прописать часть кода вот эт type tproc = procedure is…

14

Джоуи

1073 / 635 / 240

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

Сообщений: 3,546

Записей в блоге: 2

07.02.2018, 05:48

2

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

implementation function Power(const Base, Exponent: Extended): Extended;

Директива implementation означает раздел реализации, а не описания. Вы не реализовали функцию Power, а просто ее описали (нету begin end). Кстати, переименуйте как-нибудь, а то функция Power уже есть в паскале



0



Модератор

8255 / 5477 / 2249

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

Сообщений: 23,578

Записей в блоге: 3

07.02.2018, 06:04

3

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

НЕ ЗНАЮ ЧТО ДЕЛАТЬ!

 Комментарий модератора 
1. Создавать темы в нужном разделе
2. Создавать темы с осмысленным названием
3. Не дублировать свои темы!!!

Это официальное предупреждение: Ваши действия — это нарушение правил форума, а именно пп 4.2, 5.4 и 5.5

3. В секции uses подключить модуль Math
4. Удалить к чертовой матери строку 32
5. В строке 42 заменить переменную внутри FloatToStr(…) Вы присвоили результат возведения в степень в переменную Y, а там у Вас какая-то, не пойми откуда взявшаяся, S…



0



stkapler

0 / 0 / 0

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

Сообщений: 19

07.02.2018, 12:22

 [ТС]

4

сделал все как вы сказали
но теперь выдает ошибку в сроке 39 и 40

unit1.pas(39,25) Error: Incompatible type for arg no. 1: Got «TTranslateString», expected «Int64»

unit1.pas(39,25) Error: Incompatible type for arg no. 1: Got «TTranslateString», expected «Int64»

сами строки

Pascal
1
2
   x:=FloatToStr(E1.Text);
   n:=FloatToStr(E2.Text);

у меня есть готовый ответ на это задание, даже 2. но все таки хочу найти решение самостоятельно, пусть даже при помощи форумчан)



0



Модератор

8255 / 5477 / 2249

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

Сообщений: 23,578

Записей в блоге: 3

07.02.2018, 12:35

5

stkapler, Вы строку переводите в число, поэтому функция StrToFloat()

Добавлено через 7 минут
В стартовом посте все правильно ведь было написано!



0



0 / 0 / 0

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

Сообщений: 19

07.02.2018, 12:36

 [ТС]

6

все хорошо, спасибо! проект компилируется и запускается

НО!! при вводе чисел и после нажатия кнопки — ничего не происходит. а должен быть результат

visible включен. шрифт норм, цвет отличный от фона. ничего не понимаю



0



Модератор

8255 / 5477 / 2249

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

Сообщений: 23,578

Записей в блоге: 3

07.02.2018, 12:41

7

А Вы этот обработчик создавали, или так просто написали?



0



0 / 0 / 0

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

Сообщений: 19

07.02.2018, 12:43

 [ТС]

8

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



0



Модератор

8255 / 5477 / 2249

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

Сообщений: 23,578

Записей в блоге: 3

07.02.2018, 14:48

9

Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Не по теме:

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

А Вы этот обработчик создавали

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

нет, не создавал но в планах для красивого оформления программы это есть

:scratch:

stkapler, возьмите любую книжку по самым-самым азам создания программ в среде Delphi/Lazarus и обязательно прочтите ее… Ну или программирование бросайте прямо сейчас…
Все, что от Вас требовалось — это положить на форму кнопку, сделать на этой кнопке двойной клик и в получившейся заготовке обработчика события написать код.



0



0 / 0 / 0

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

Сообщений: 19

07.02.2018, 19:11

 [ТС]

10

спасибо, теперь все ок!
мне тут пол года учиться осталось, до сдам эти проекты — и буду гулять
вообще не пойму, зачем в 2018 дают учить паскаль
но за помощь — огромное спасибо!



0



Hretgir

07.02.2018, 20:01

Не по теме:

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

зачем в 2018 дают учить паскаль

действительно, ребята учатся на начальников Била Гейтса, а их Паскаль учить заставляют, маразм да и только.



0



0 / 0 / 0

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

Сообщений: 19

07.02.2018, 20:08

 [ТС]

12

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



0



Hretgir

07.02.2018, 20:37

Не по теме:

а что-бы вы хотели учить в 2018? просто интересно…
вот я-бы хотел учить нейросети, а получается что по факту мне нужен паскаль, на настоящий момент.
хотя можете не отвечать, я только мешаю.



0



stkapler

07.02.2018, 20:58

 [ТС]

Не по теме:

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



0



Cyborg Drone

08.02.2018, 09:25


    Ошибка «Fatal: Syntax error, «;» expected but «.» found»

Не по теме:

Да не спорьте. Не нужно знать язык программирования — значит, не нужно. Личное дело каждого. С другой стороны, те, кто всерьёз занимается программированием, как правило, знает несколько языков программирования, и выучить ещё один, как правило, никакая не проблема.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

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

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

08.02.2018, 09:25

Fatal: Syntax error, «BEGIN» expected but «end of file» found
Доброго времени суток! Вот простой код, который, по идее, находит корни квадратного уравнения….

Unit1.pas(41,5) Fatal: Syntax error, «;» expected but «identifier Y» found
Привет всем.Сделал программу,вроде как должна работать,не пойму в чем проблема(программа вся…

Fatal: Syntax error, «BEGIN» expected but «identifier BITMAP» found
Добрый день! пишу программу по методичке, выдает вот такие ошибки:
unit1.pas(78,1) Fatal: Syntax…

Unit1.pas(66,4) Fatal: Syntax error, «;» expected but «.» found
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, FileUtil, Forms,…

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

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

15

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

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

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

Всем доброго времени суток.
В книге Алексеев Е. Р., Чеснокова О. В., Кучер Т. В. — 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

Понравилась статья? Поделить с друзьями:
  • Syntax error gothic 3
  • Syntax error expected name found
  • Syntax error expected gthtdjl
  • Syntax error expected but identifier readln found
  • Syntax error expected but found перевод