Вот вам старая школа IF для вас, но есть проблема
У меня есть оператор IF в QBASIC... да... QBASIC...
Я учил кого-то программировать (я решил, что это будет приятно и легко увидеть
как работает синтаксис).
... Во всяком случае, у меня есть этот код:
CLS
start:
INPUT ">>", a$
PRINT a$
IF (INSTR(a$, "do you")) THEN
IF (INSTR(a$, "like")) THEN
IF (INSTR(a$, "cheese")) THEN PRINT "Yep, I like cheese":
IF (INSTR(a$, "music")) THEN PRINT "Depends, which genre?": GOTO musicGenre
ELSE IF (INSTR(a$, "hate")) THEN
IF (INSTR(a$, "cheese")) THEN PRINT "No, I like cheese"
END IF
END IF
END IF
musicGenre:
INPUT ">>", m$
SELECT CASE (m$)
CASE "pop"
PRINT "..pop! lol, baa baa"
CASE "rock"
PRINT "Rock is ok"
END SELECT
GOTO start
Но когда я набираю "do you like cheese?
", он только отвечает "Yep, I like cheese
" каждый раз...
Может ли кто-нибудь пролить свет на это?
примечание:
" do you like music?
" работает каждый раз...
примечание 2:
Снимок экрана:
![alt text]()
Ответы
Ответ 1
Ваш код, который вы указали, отображается правильно.
Попробуйте выполнить одно из следующих действий:
- Если возможно, отправьте нам более крупный образец кода. Я предполагаю, что ошибка находится вне кода, который вы предоставили.
- Вывести вход (
a$
) перед первым IF
, чтобы подтвердить, что ваш код будет работать с ожидаемым вводом.
- В большинстве языков
FALSE
равен нулю, а true - что-то еще. Однако вы можете быть более явным со следующим IF (INSTR(a$) > 0)
.
РЕДАКТИРОВАТЬ: Вы должны положить goto start
на любой результат сыра. В противном случае он перейдет в код musicGenre
.
Ответ 2
CLS
start:
INPUT ">>", a$
IF (INSTR(1, a$, "do you")) THEN
IF (INSTR(1, a$, "like")) THEN
IF (INSTR(1, a$, "cheese")) THEN PRINT "Yep, I like cheese"
IF (INSTR(1, a$, "music")) THEN PRINT "Depends, which genre?": GOSUB musicGenre
END IF
IF (INSTR(1, a$, "hate")) THEN
IF (INSTR(1, a$, "cheese")) THEN PRINT "No, I like cheese"
END IF
END IF
GOTO start
musicGenre:
INPUT ">>", m$
SELECT CASE (m$)
CASE "pop"
PRINT "..pop! lol, baa baa"
CASE "rock"
PRINT "Rock is ok"
END SELECT
RETURN
Ответ 3
Эта программа демонстрирует синтаксический анализ входных данных и gosubs в Basic.
REM Cheese progran source:
CLS
DO
INPUT ">>", a$
a$ = LCASE$(a$)
PRINT a$
IF INSTR(a$, "do you") THEN
IF INSTR(a$, "like") THEN
IF INSTR(a$, "cheese") THEN
PRINT "Yep, I like cheese":
END IF
IF INSTR(a$, "music") THEN
PRINT "Depends, which genre?"
GOSUB MusicGenre
END IF
ELSE
IF INSTR(a$, "hate") THEN
IF INSTR(a$, "cheese") THEN
PRINT "No, I like cheese"
END IF
END IF
END IF
END IF
LOOP
END
MusicGenre:
INPUT ">>>", m$
a$ = LCASE$(a$)
SELECT CASE (m$)
CASE "pop"
PRINT "..pop! lol, baa baa"
CASE "rock"
PRINT "Rock is ok"
END SELECT
RETURN