Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/54: Рейтинг темы: голосов - 54, средняя оценка - 4.50
 Аватар для Ixmil
19 / 187 / 0
Регистрация: 17.06.2013
Сообщений: 2,163

Подскажите про оператор IF THEN END IF

23.11.2021, 19:51. Показов 14385. Ответов 161
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Тема: Подскажите про оператор IF THEN END IF
Ограничено ли число команд выполняемых при соблюдении его условия или же это может быть любое число комманд?

Потому что в Паскале если пишут подобным образом: if then то это означает что в случае выполнения условия оператора может выполняться только одна инструкция следующаяя сразу за словом then. А следующая команда уже не будет относится к оператору. А если нужно чтобы количество комманд внутри условного оператора было любым нужно писать как:
if then begin end;. Я заинтересован в использовании только универсального варианта условного оператора Бейсика у которого число комманд внутри оператора может быть любым. Если же оператор IF THEN END IF как то переделывается в более уневерсальный вариант то не могли бы вы подсказать как это делать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.11.2021, 19:51
Ответы с готовыми решениями:

Excel 2013 32-bit URLDownloadToFile пишет "Compile error: only comment may appear after End Sub End Function or End Prop
Добрый день! перепробовал все варианты и не вызывается функция URLDownloadToFile: пишет "Compile error: only comment may appear...

Оператор Try . Except . Finally . End; при работе с ресурсами
Здравствуйте. Задача такая. Есть текстовый файл в ресурсах, который считывается и записывается в Memo. Требуется предусмотреть...

Оператор for. Для чего в коде дополнительные begin-end
Program DimanRu; Var name, surname: string; i:integer; Begin; Writeln('Введите имя...'); Readln(name); Writeln('Введите...

161
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
02.12.2021, 13:24
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от bormant Посмотреть сообщение
А завтра плюс месяц выяснилось, что в номере флага ошиблись, и вот оно, долгожданное исправление:
Потому что так не пишут нормальные программы. Для бита дается константное имя тогда такой ошибки не будет:
Visual Basic
1
If (x and MY_BIT) = MY_BIT And y = 4
Добавлено через 4 минуты
Цитата Сообщение от bormant Посмотреть сообщение
Да-да, знаю, CBool именно это и делает, сравнивает с нулём
Нет. Сравни:
Visual Basic
1
2
3
4
5
6
    Dim x As Variant
    
    x = "False"
    
    Debug.Print x <> 0 ' True
    Debug.Print CBool(x) ' False
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
02.12.2021, 13:25
А я вот не люблю когда в условном выражении есть больше одной проверки и любые комбинации операторов And, Or, Not.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7818 / 4637 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
02.12.2021, 13:40
The trick,
... и вот тут нужно упомянуть, что если в маске окажется несколько бит, то семантика выражения тут же распадается на
(x and mask)=mask -- установлены все (and)
(x and mask)=mask -- установлен один из (or)
и нормальные программы пишут исходя из предпочтительной логики. Ну и ошибаются при этом тоже, куда ж без ошибок-то.


Добавлено через 1 минуту
Цитата Сообщение от The trick Посмотреть сообщение
Нет.
На название раздела обратите внимание
Впрочем, CBool тут тоже вроде как отсутствует

Добавлено через 13 минут
Кстати, раз уж оффтопим, в таком варианте что получим? False и ошибку?
Visual Basic
1
2
3
4
5
6
    Dim x As String
    
    x = "False"
    
    Debug.Print CBool(x)
    Debug.Print x <> 0
0
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
02.12.2021, 13:43
Цитата Сообщение от bormant Посмотреть сообщение
и вот тут нужно упомянуть, что если в маске окажется несколько бит, то семантика выражения тут же распадается на
Не вижу никаких проблем и не пойму как сравнение с нулем лучше чем сравнение с чем-то другим в данном случае или с CBool.

Цитата Сообщение от bormant Посмотреть сообщение
На название раздела обратите внимание
Обратите внимание на что отвечаете.

Добавлено через 1 минуту
Цитата Сообщение от bormant Посмотреть сообщение
Кстати, раз уж оффтопим, в таком варианте что получим? False и ошибку?
Конечно, т.к. CBool - это не:
Цитата Сообщение от bormant Посмотреть сообщение
Да-да, знаю, CBool именно это и делает, сравнивает с нулём
как Вы писали.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7818 / 4637 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
02.12.2021, 13:57
The trick,
Обратите внимание на что отвечаете.
Выражение (x and 1) CBool сравнивает с нулём.

Добавлено через 3 минуты
Хотя вполне допускаю, что могу многого не знать, и при каких-то x утверждение станет неверным. Было бы весьма любопытно на такое посмотреть.
0
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
02.12.2021, 13:59
Цитата Сообщение от bormant Посмотреть сообщение
Выражение (x and 1) CBool сравнивает с нулём.
При чем тут название раздела тогда?

Вы написали что сравнение с нулем практичней, я написал что в данном случае без разницы и практичней использовать CBool, а не сравнение с нулем и привел пример где CBool ведет себя иначе, т.к. может принимать на вход любое выражение. Что Вы мне хотите доказать?
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
02.12.2021, 14:09
Я тут встряну в вашу дискуссию, просто напомню, что константа S_FALSE равна единице. Она конечно не имеет отношения к VARIANT_FALSE, но всё же. В случае с HRESULT ложь — это единица.
0
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
02.12.2021, 14:12
Замабувараев, HRESULT'ы тестируются специальными макросами FAILED, SUCCEEDED и т.д. S_FALSE равен единице т.к. это успешный статус.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
02.12.2021, 14:18
Вот видите сколько вариантов нужно предусмотреть когда у нас нет логического типа данных или когда логический тип данных — это псевдоним для численного типа данных.
1
Эксперт по электронике
7143 / 3322 / 342
Регистрация: 28.10.2011
Сообщений: 13,070
Записей в блоге: 7
02.12.2021, 14:33
Цитата Сообщение от Замабувараев Посмотреть сообщение
2. На FreeBASIC могу делать всё то же самое что и на Си, нет таких вещей которые можно сделать только на Си и нельзя на FreeBASIC.
3. Полностью управляю процессом создания исполняемого файла.
4. Получаю быстрые и маленькие программы.
2. можете на FB компилировать прошивки для STM32? Я вот на Си могу! И таких примеров можно привести много.
3. и 4. То есть хотите сказать что на Си этого нельзя сделать? Иначе зачем было об этом писать?
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
02.12.2021, 14:53
Цитата Сообщение от locm Посмотреть сообщение
3. и 4. То есть хотите сказать что на Си этого нельзя сделать? Иначе зачем было об этом писать?
Это можно делать, но так делает никто, потому что в Си всё что выходит за рамки стандартной библиотеки принято дискриминировать, потому что не кроссплатформенно, не POSIX, «это же только под винду!», «в следующей версии API может поменяться», «нестандартное решение» и не знаю сколько ещё отговорок от прямых вызовов функций операционной системы.
Цитата Сообщение от locm Посмотреть сообщение
2. можете на FB компилировать прошивки для STM32? Я вот на Си могу! И таких примеров можно привести много.
Мне лень это проверять, у меня даже железа такого нет, но у меня есть стойкое убеждение, что если на FreeBASIC написали операционную систему или программы для операционной системы ColibriOS, то и для STM32 это можно сделать.
0
Эксперт по электронике
7143 / 3322 / 342
Регистрация: 28.10.2011
Сообщений: 13,070
Записей в блоге: 7
02.12.2021, 15:09
Цитата Сообщение от Замабувараев Посмотреть сообщение
то и для STM32 это можно сделать.
Покажите пример прошивки.
Цитата Сообщение от Замабувараев Посмотреть сообщение
у меня даже железа такого нет
У меня есть. Вы скомпилируйте прошивку (и напишите как это сделали) для STM32F103C8T6, а я проверю.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
02.12.2021, 15:11
Ещё одна причина моей умеренности: весь FreeBASIC использует Си как промежуточный язык для компиляции. Следовательно, что может Си, то может и FreeBASIC.
Не для всех платформ есть рантайм фрибесика, но это ничего не значит, с одинаковым успехом можно вызывать рантайм Си.
Ну а ещё FreeBASIC может компилироваться в промежуточный код LLVM‐машины, а значит, может работать и в браузёре.
0
Эксперт по электронике
7143 / 3322 / 342
Регистрация: 28.10.2011
Сообщений: 13,070
Записей в блоге: 7
02.12.2021, 15:25
Цитата Сообщение от Замабувараев Посмотреть сообщение
Не для всех платформ есть рантайм фрибесика, но это ничего не значит, с одинаковым успехом можно вызывать рантайм Си.
Забудьте про рантайм, забудьте про ОС и биос. Прошивка для STM32 работает непосредственно с железом. Менеджера памяти нет, процессов нет, нужно напрямую работать с памятью и регистрами микроконтроллера.
1
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
02.12.2021, 16:02
Когда более 40 назад BASIC портировали на микропроцессоры, авторы добавили расширения вроде PEEK(), POKE etc. для работы с памятью.
Какие проблемы могут быть у современных 32-разрядных BASICов?
0
Эксперт по электронике
7143 / 3322 / 342
Регистрация: 28.10.2011
Сообщений: 13,070
Записей в блоге: 7
02.12.2021, 17:06
Цитата Сообщение от politoto Посмотреть сообщение
Какие проблемы могут быть у современных 32-разрядных BASICов?
Проблема в том что FB не предназначен для STM32...
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
02.12.2021, 20:07
locm, потому что
Цитата Сообщение от FreeBasic
fbc, currently supports building for i386-based architectures
?
0
Эксперт по электронике
7143 / 3322 / 342
Регистрация: 28.10.2011
Сообщений: 13,070
Записей в блоге: 7
02.12.2021, 22:46
politoto, просто попытайтечь собрать прошивку для STM32 на FB и все поймете. Причин много почему не получится.
Это не компьютер, а микроконтроллер https://ru.wikipedia.org/wiki/Микроконтроллер
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
03.12.2021, 12:01
Цитата Сообщение от locm Посмотреть сообщение
У меня есть. Вы скомпилируйте прошивку (и напишите как это сделали) для STM32F103C8T6, а я проверю.
Пётр, для этого есть всякие AVR Basic и вероятно ещё другие решения. Не знаю насчёт конкретно STM и конкретно
указанной модели, но для МК пишут. Да мы вроде это обсуждали уже давно ещё. Тут нужны специализированные
знания и оборудование. Это сродни DOS-у, где всё руками прогается, все порты, прерывания, работа с памятью
и прочая мутатень, просто надо знать архитектуру и команды МК под который пишешь. А что PB заточен под сборку
на STM? Я такого не слышал.

Цитата Сообщение от locm Посмотреть сообщение
Проблема в том что FB не предназначен для STM32...
Да вроде и не заявляли они что компилятор будет собирать под МК. Вот потому и говорю не надо этих всех
инфлуэнсов си в бейсик, чтобы потом плодить такие дискуссии. И эти все "энтузиасты" которые на костылях
там что-то в сарае собирают под другие архитектуры. Нафиг они не нужны.
0
Эксперт по электронике
7143 / 3322 / 342
Регистрация: 28.10.2011
Сообщений: 13,070
Записей в блоге: 7
03.12.2021, 15:01
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Пётр, для этого есть всякие AVR Basic и вероятно ещё другие решения.
Я знаю, но Замабувараев написал
Цитата Сообщение от Замабувараев Посмотреть сообщение
2. На FreeBASIC могу делать всё то же самое что и на Си, нет таких вещей которые можно сделать только на Си и нельзя на FreeBASIC.
Я не сомневаюсь что FB может многое, но не нужно преувеличивать возможности.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Да вроде и не заявляли они что компилятор будет собирать под МК.
Разработчики может и не заявляли (к ним вопросов нет), а Замабувараев заявил что FB может все что может Си. Си может компилировать под STM32 и другие контроллеры, значит следуя логике FB тоже должен.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.12.2021, 15:01

Оператор условия не открывает ветвь then begin end, несмотря, на то, что условие выполняется
Учусь по самоучителю &quot;Песни о Паскале&quot;. Код программы предложенный автором не кидать, и ваши коды тоже т.к. сам хочу разобраться. Условие...

Про оператор IF
Добрый вечер. Переменная а получила значение а = &quot;Иванов Иван&quot;, нужно найти в списке этого &quot;Иванов Иван&quot; Запускаем цикл и...

Не могу поставить end. после else – пишет "ожидался оператор"
uses crt; var a:integer; k:string; begin; randomize; repeat clrscr; a:=random(4); if a=1 then begin

Подскажите случаи, когда количество begin и end в программе не совпадают
подскажите случаи когда кол-во begin &amp; end в прграмме не совпадают :swoon: вот первый : case .. of ..... end;

Простая задачка про тернарный оператор
Переписал с учебника простую задачку, однако на 10 и 12 строке показывает ошибки. Что тут не так? #include&lt;iostream&gt; ...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru