2013-08-22 4 views
1

Я только начал изучать BASIC и использовать Stackoverflow. Это мой код в FBIDE. Сообщения об ошибках:Неудачная компиляция

 
42 variable not declared : var1 in 'input "Enter Function Number" ;var1/
- 
32 expected 'END IF' found 'end' in 'end sub'/ 
- 
32 expected 'END IF' in 'end sub' 
- 

Код:

declare sub premain 
declare sub main 
dim var1 as integer 
premain 
sub premain 
    print "EMC ALPHA v1.0" 
    main 
end sub 

sub main 
    print "Functions:" 
    print "1.Add" 
    print "2.Subtract" 
    print "3.Multiply" 
    print "4.Divide" 

    input "Enter Function Number" ;var1 
    if var1=1 then 
     print "HElo" 
end sub 

ответ

2

В вашей программе переменной var1 объявлен в основном объеме программы. Эта переменная недоступна в подпрограммах (процедуры: SUB или FUNCTION), если вы не используете ключевое слово SHARED. Затем переменная станет доступной в глобальном масштабе в вашей программе.

Лучший способ заключается в использовании локальных переменных:

declare sub premain 
declare sub main 

premain 
sleep: end 


sub premain 
    print "EMC ALPHA v1.0" 
    main 
end sub 

sub main 
    print "Functions:" 
    print "1.Add" 
    print "2.Subtract" 
    print "3.Multiply" 
    print "4.Divide" 
    '****vv HAVE A LOOK HERE vv**** 
    dim var1 as integer 
    input "Enter Function Number" ;var1 
    if var1=1 then 
     print "HElo" 
    end if '<== this was missing, too. ***** ("Expected END IF") 
end sub 

Глобальные переменные (созданные Shared) следует лишь в редких случаях используется, например, для всей программы конфигурации/настроек, например, выбранный пользователем язык в многоязычном приложении.

Кроме того, в вашей программе не было END IF (исправлено в фрагменте кода выше в моей публикации).

+0

спасибо. Последний вопрос - что такое конец, если (что он делает)? – florosus

+0

'END IF' используется для завершения блока условных частей программы. Все между 'IF ... THEN' и' END IF' выполняется только в том случае, если условие (например, 'var1 = 1') истинно. Посмотрите здесь: http://www.freebasic.net/wiki/wikka.php?wakka=KeyPgEndif – MrSnrub