Форум программистов, компьютерный форум, киберфорум
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. Показов 14358. Ответов 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
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,061
Записей в блоге: 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
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,061
Записей в блоге: 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
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,061
Записей в блоге: 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
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,061
Записей в блоге: 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
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,061
Записей в блоге: 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
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,061
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Поиск произведения положительных чётных чисел в последовательности
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Дана произвольная последовательность целых чисел. Найти произведение положительных четных чисел данной последовательности. . . .
Обработка трёх чисел: утроение и возведение в степень
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Даны три действительных числа. Утроить те из них, значения которых неотрицательны, и возвести в четвертую степень отрицательные. . . .
Расчёт стоимости яблок по весу
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Написать программу вычисления стоимости некоторого количества (по весу) яблок. Решение: Создан документ, с табличной частью. . .
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru