Форум программистов, компьютерный форум, киберфорум
Теория программирования
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
1 / 1 / 0
Регистрация: 21.09.2025
Сообщений: 24

Оператор goto. Ищу примеры эффективного использования

21.10.2025, 09:22. Показов 2002. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую,
Тема сложная, но может оказаться интересной для опытных программистов. Оператор goto хоть и гибкий, но отходит от принципов структурного программирования. Я исследую эту тему, и ищу примеры, где использование goto оправдано в плане компактности, эффективности, читабельности кода. Например, goto помогает:
* выйти из многоуровневого цикла (где break не справится)
* избавиться от структур вложенных if-блоков
* ...
какие еще примеры?

Добавлено через 16 секунд
Язык - любой, например Си.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.10.2025, 09:22
Ответы с готовыми решениями:

Понятие трудоёмкости алгоритма. Понятие эффективного алгоритма
Понятие трудоёмкости алгоритма. Классификация алгоритмов на основе функции трудоёмкости....

Оператор GOTO
GOTO в топку. В нормальных языках нужны только циклы, а GOTO пусть останется только для *.bat, и...

каким образом на схеме изобразить процедуру goto
каким образом изображается процедура goto на схеме, то есть возвращение в определенное место в...

49
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
27.10.2025, 12:59
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Что это за страшный ЯП? И врагу не пожелаешь на этой жести писáть!
Почему страшный? Вроде, код от кода на Си ничем не отличается, кроме того, что не нужно в функцию передавать размерность массива.

Цитата Сообщение от Eddy_Em Посмотреть сообщение
В общем, если вдруг какой-то из конструкторов не получился, а нам нужны абсолютно все, шлем все нафиг, и идем в блок деструкторов.
ИМХО код странный. Хотелось бы увидеть осмысленный код.
А если всё получилось, кто будет вызывать деструкторы?
Зачем выполнять "destructor2(&___);", если мы не добрались до строки "if(!(___ = _3rdfn(…)) goto ooops;"?
0
Windows must die
828 / 834 / 102
Регистрация: 23.11.2021
Сообщений: 4,851
Записей в блоге: 15
27.10.2025, 14:51
Цитата Сообщение от Shamil1 Посмотреть сообщение
Зачем выполнять "destructor2(&___);",
А он и не будет выполняться, если соответствующий указатель равен NULL.

Добавлено через 3 минуты
Цитата Сообщение от Shamil1 Посмотреть сообщение
код от кода на Си ничем не отличается
Очень даже отличается. И не в лучшую сторону.
Цитата Сообщение от Shamil1 Посмотреть сообщение
не нужно в функцию передавать размерность массива
В С тоже так можно:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
typedef enum{
  ARR_T_I64,
  ARR_T_U64,
  ARR_T_FLOAT,
  ARR_T_DOUBLE,
 ...
} arrtype_t;
 
typedef struct{
  void *data;
  size_t len;
  arrtype_t type; 
} array_t;
Ну и так далее...
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
27.10.2025, 16:08
Добавлено через 1 минуту
Цитата Сообщение от Eddy_Em Посмотреть сообщение
А он и не будет выполняться, если соответствующий указатель равен NULL.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int areYoyReady(sometype *_, sometype1 *__, sometype2 *___ …(и так овердофига аргументов)){
  if(!(_ = _1stfn()) return FALSE;
  // do something here
  if(!(__ = _2ndfn()) return FALSE;
  // do something here
  if(!(___ = _3rdfn()) return FALSE;
  // do something here
  return TRUE;
}
 
if (!areYoyReady(x,y,z,....)){
  destructor(&_);
  destructor1(&__);
  destructor2(&___);
}

Цитата Сообщение от Eddy_Em Посмотреть сообщение
Очень даже отличается.
Чем отличается?
0
Windows must die
828 / 834 / 102
Регистрация: 23.11.2021
Сообщений: 4,851
Записей в блоге: 15
27.10.2025, 17:06
Shamil1, я имею в виду:
C
1
2
3
4
5
6
void destructor(sometype **x){
  if(!x || !*x) retrun; // вот здесь мы проверили, что NULL → все ОК
  ...
  free(*x);
  *x = NULL;
}
Понятно, что пример я плохой привел, т.к. там не подразумевается явно, что все обязаны быть вначале NULL. Ну, пусть так:
C
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
static int GrabImage(fc2Image *convertedImage){
    if(!convertedImage) return FALSE;
    int ret = FALSE;
    fc2Image rawImage;
    // start capture
    FC2FN(fc2StartCapture);
    err = fc2CreateImage(&rawImage);
    if(err != FC2_ERROR_OK){
        WARNX("Error in fc2CreateImage: %s", fc2ErrorToDescription(err));
        fc2StopCapture(context);
        return FALSE;
    }
    // Retrieve the image
    err = fc2RetrieveBuffer(context, &rawImage);
    if(err != FC2_ERROR_OK){
        WARNX("Error in fc2RetrieveBuffer: %s", fc2ErrorToDescription(err));
        goto rtn;
    }
    // Convert image to gray
    err = fc2ConvertImageTo(FC2_PIXEL_FORMAT_MONO8, &rawImage, convertedImage);
    if(err != FC2_ERROR_OK){
        WARNX("Error in fc2ConvertImageTo: %s", fc2ErrorToDescription(err));
        goto rtn;
    }
    ret = TRUE;
rtn:
    fc2StopCapture(context);
    fc2DestroyImage(&rawImage);
    return ret;
}
Здесь у нас "деструктор" останавливает захват изображений и освобождает память.

Добавлено через 2 минуты
Цитата Сообщение от Shamil1 Посмотреть сообщение
Чем отличается?
Тем, что это - вообще не С никакой, а что-то непонятное. Вот, например:
Code
1
(int,int,int)? FindIndex(int[,,] arr, Predicate<int> p)
Я, как сишник, вообще не понимаю, что это значит.
0
Модератор
Эксперт Java
 Аватар для alecss131
2835 / 1344 / 403
Регистрация: 11.08.2017
Сообщений: 4,297
Записей в блоге: 2
27.10.2025, 21:17
Цитата Сообщение от Eddy_Em Посмотреть сообщение
что это значит
Возвращается кортеж опционального типа (может быть null) состоящий из 3 целых чисел. Первый параметр это трехмерный массив, а второй по сути указатель на функцию - условие для выбора принимающая целые числа.
Я этого языка не знаю но понимаю что там написано.
1
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
28.10.2025, 09:47
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Ну, пусть так:
Я бы написал так:
C
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
static int GrabImage(fc2Image *convertedImage){
    if(!convertedImage) return FALSE;
    fc2Image rawImage;
    // start capture
    FC2FN(fc2StartCapture);
    err = fc2CreateImage(&rawImage);
    if(err != FC2_ERROR_OK){
        WARNX("Error in fc2CreateImage: %s", fc2ErrorToDescription(err));
        fc2StopCapture(context);
        return FALSE;
    }
    // Retrieve the image
    err = fc2RetrieveBuffer(context, &rawImage);
    if(err != FC2_ERROR_OK){
        WARNX("Error in fc2RetrieveBuffer: %s", fc2ErrorToDescription(err));
        fc2StopCapture(context);
        fc2DestroyImage(&rawImage);
        return FALSE;
    }
    // Convert image to gray
    err = fc2ConvertImageTo(FC2_PIXEL_FORMAT_MONO8, &rawImage, convertedImage);
    if(err != FC2_ERROR_OK){
        WARNX("Error in fc2ConvertImageTo: %s", fc2ErrorToDescription(err));
        fc2StopCapture(context);
        fc2DestroyImage(&rawImage);
        return FALSE;
    }
    fc2StopCapture(context);
    fc2DestroyImage(&rawImage);
    return TRUE;
}
На строчку длиннее, зато читать проще - не нужно скролить вниз, куда там гото ведёт.

Если не хочется одинаковый код писать несколько раз, то можно выделить 4 строки
C
1
2
3
4
        WARNX("Error in fc2ConvertImageTo: %s", fc2ErrorToDescription(err));
        fc2StopCapture(context);
        fc2DestroyImage(&rawImage);
        return FALSE;
в отдельную функцию.

Цитата Сообщение от Eddy_Em Посмотреть сообщение
это - вообще не С никакой, а что-то непонятное
Как нам вернуть из функции несколько чисел?
Конечно, можно специально для этого объявить структуру из трёх чисел. Но лучше использовать кортеж (int, int, int).

Как нам быть, если возвращать число (или несколько) нужно не всегда?
Конечно, можно использовать специальное значение (например, -1). Но лучше явно указать, что мы возвращаем ничего: int? вместо int или (int, int, int)? вместо (int, int, int).

int[,,] - трёхмерный массив

Predicate<int> - предикат. то есть, функция, которая принимает int и возвращает bool.

По сути - это Си плюс немного синтаксического сахара.
0
Windows must die
828 / 834 / 102
Регистрация: 23.11.2021
Сообщений: 4,851
Записей в блоге: 15
28.10.2025, 10:04
Цитата Сообщение от Shamil1 Посмотреть сообщение
в отдельную функцию
Тогда уж лучше макрос. Но мне goto привычней.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Как нам вернуть из функции несколько чисел?
Естественно, через указатели. Либо возвращать структуру, С это умеет, начиная с С99 (а то и С89 - не проверял). Кстати, долгое время я memcpy использовал для присвоения структур, а потом узнал, что работает непосредственный знак "=". Что и использую. Правда, сами структуры как входные объекты не передаю - все равно передаю указатель по-привычке.
Цитата Сообщение от Shamil1 Посмотреть сообщение
кортеж
В С такого понятия нет. Про С++ не скажу, но, если вспомнить, что я там по Страуструпу учил лет 25 назад, то тоже не было такого. Вот и говорю, что С там даже и не пахнет!
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
28.10.2025, 11:29
Цитата Сообщение от Eddy_Em Посмотреть сообщение
В С такого понятия нет.
В Си и 64-битного числа раньше не было. С его появлением Си не сильно поменялся. Точно так же, Си не сильно поменяется, если добавить в него кортежи.

Цитата Сообщение от Eddy_Em Посмотреть сообщение
Либо возвращать структуру
А тут уже готовая структура. Удобно. И при чтении кода не нужно смотреть, что это за структура.

Цитата Сообщение от Eddy_Em Посмотреть сообщение
Правда, сами структуры как входные объекты не передаю - все равно передаю указатель по-привычке.
Можно объявлять свой тип, как массив (структур) из одного элемента.
0
322 / 81 / 5
Регистрация: 19.07.2024
Сообщений: 447
28.10.2025, 11:55
Цитата Сообщение от Quinn67 Посмотреть сообщение
* выйти из многоуровневого цикла (где break не справится)
* избавиться от структур вложенных if-блоков
* ...
какие еще примеры?
* перепрыгнуть в другую ветку switch/case.
* общие точки выхода из большой и развесистой функции (например: точка err: и точка success: в которые имеется множество переходов в пределах функции).
0
Модератор
Эксперт Java
 Аватар для alecss131
2835 / 1344 / 403
Регистрация: 11.08.2017
Сообщений: 4,297
Записей в блоге: 2
28.10.2025, 12:31
Цитата Сообщение от Shamil1 Посмотреть сообщение
раньше не было
Там и переменные раньше надо было объявлять только в начале функции, это потом ересь добавили, что можно их в месте непосредственного использования объявлять.

Цитата Сообщение от jcxz Посмотреть сообщение
перепрыгнуть в другую ветку switch/case
ошибка проектирования если такое надо
Цитата Сообщение от jcxz Посмотреть сообщение
общие точки выхода из большой и развесистой функции
опять ошибка организации кода и его разбивки на функции
0
322 / 81 / 5
Регистрация: 19.07.2024
Сообщений: 447
28.10.2025, 13:14
Цитата Сообщение от alecss131 Посмотреть сообщение
ошибка проектирования если такое надо
Так можно любое использование goto охарактеризовать. Но давайте без экстремизма!
Если использование goto улучшает читаемость и оптимизирует код, то его использование оправдано, а остальные решения - "именно ошибка проектирования".

Цитата Сообщение от alecss131 Посмотреть сообщение
опять ошибка организации кода и его разбивки на функции
Как раз хотел там подписать, что не нужно втирать про "разделение на функции".
Если "разделение на функции" ухудшает читаемость и ухудшает оптимальность кода (если она важна), то как раз эта разбивка и будет "ошибка организации кода", а не goto.

Добавлено через 4 минуты
Цитата Сообщение от alecss131 Посмотреть сообщение
это потом ересь добавили, что можно их в месте непосредственного использования объявлять.
Это не "ересь", а отличная вещь! Так как позволяет улучшить читаемость кода.
1
Windows must die
828 / 834 / 102
Регистрация: 23.11.2021
Сообщений: 4,851
Записей в блоге: 15
28.10.2025, 13:16
"Ошибка проектирования" - это бояться goto и не использовать даже там, где без него вообще никак невозможно обойтись!
Вот с longjump нужно аккуратно обращаться, если "прыжки" между функциями выполняются. А goto может сэкономить ресурсы, особенно на микроконтроллерах. Любой вход в функцию связан с уймой накладных расходов. Вот, скажем, чтобы не увеличиать эти расходы в тех случаях, когда мне нужно несколько раз один и тот же блок использовать, а в виде макроса это будет некрасиво или сложно, просто использую вложенные функции. К сожалению, шланг не понимает вложенных функций, поэтому из двух компиляторов остается лишь gcc. Пробовал как-то в обработке изображений избавиться от таких вложенных функций: производительность процентов на пять упала!
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
28.10.2025, 14:17
Цитата Сообщение от Eddy_Em Посмотреть сообщение
А goto может сэкономить ресурсы, особенно на микроконтроллерах.
Низкоуровневая оптимизация. В некоторых случаях мы сознательно идём на ухудшение архитектуры (читабельности) ради чего-то другого. И тут в ход могут пойти всевозможные "грязные" трюки, включая goto. Но, чем лучше становятся компиляторы, тем реже приходится прибегать к "грязным" трюкам.
0
Windows must die
828 / 834 / 102
Регистрация: 23.11.2021
Сообщений: 4,851
Записей в блоге: 15
28.10.2025, 14:50
Shamil1, ничего "грязного" в использовании goto нет!
Все равно "на нижнем уровне" ваши "красивости" превратятся в итоге в те же goto… Скажем, если switch оптимизируется (например, весь набор вариантов - из enum), то просто будет вычислен индекс "смещение + значение из case", а после — goto на адрес, хранящийся в этой ячейке. Но руками так делать не очень удобно.
Хотя, для оптимизации чего только не сделаешь. Как пример: медленный МК, а в switch мы проверяем хэш текстовой команды (а команд у нас, скажем, несколько сотен). Чтобы не ветвиться в длительных if (во что это и будет развернуто компилятором в данном случае), есть смысл организовать свой поиск - дихотомией, например. А уж по найденному индексу и будем вызывать функцию-обработчик.

Например, в сравнительно медленной флеш-памяти я именно бисекцией ищу последний записанный кусок конфигурационных данных: выровненная структура имеет известный размер, в "голове" ее записан "magick" uint_16_t (часто - этот самый размер), и т.к. это число - гарантированно не 0xffff, то можно смело читать соответствующие четыре байта из области флеш "эмулятора EEPROM", прыгая туда-сюда. В итоге в худшем случае при линейном поиске мы потратим пару-тройку секунд на отыскание последней записи, а бинарным поиском - буквально несколько миллисекунд!

Не по теме:


Очень прискорбно, что "погромисты", разрабатывающие софт для ПК, не стараются его оптимизировать. Вот включил я компьютер, и у меня тупо "биос" секунд семь отнимает, хоть и выставлены все возможные флаги "quick". Дальше еще около секунды занимает grub (а вдруг мне "поймать" надо будет?), потом openrc в течение 2-3 секунд загружает ядро и базу, и еще секунд 5-7 уходит на загрузку дальнейших сервисов, поднятие сети и запуск xdm. Я ввожу логин/пароль, через полсекунды у меня открыт i3wm и xfce4-terminal (по умолчанию всегда его запускаю, чтобы лишних телодвижений не совершать вида нажатия "super+t") — без терминала все равно невозможно ничего сделать. Ну и дальше уже по усмотрению. Браузер, кстати, тоже долго грузится: около трех секунд firefox, и около семи - chrome (ну, эту дрянь я только для просмотра rutube и онлайн-видео использую, т.к. в firefox у меня такое количество блокировщиков всего и вся, что эти сайты в нем не работают). Еще один из тормозов - qt-creator, грузится секунды три, да еще и иной раз подтормаживает (особенно если я открою окна три-четыре). kicad на удивление шустро работает. Ну, а техстудио - вообще прелесть (несмотря на то, что на убогих культяпках написан)!

0
322 / 81 / 5
Регистрация: 19.07.2024
Сообщений: 447
28.10.2025, 17:17
Цитата Сообщение от Shamil1 Посмотреть сообщение
Низкоуровневая оптимизация. В некоторых случаях мы сознательно идём на ухудшение архитектуры (читабельности) ради чего-то другого. И тут в ход могут пойти всевозможные "грязные" трюки, включая goto. Но, чем лучше становятся компиляторы, тем реже приходится прибегать к "грязным" трюкам.
Не факт. Часто с goto код становится читабельнее. И его стоит применять даже вне зависимости от возможностей компилятора:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
switch (...) {
  case N1:
    ...
    goto commonN1N2N3;
  case N2:
    ...
    goto commonN1N2N3;
  case N3:
    ...
    commonN1N2N3:
    ...
    break;
  case K1:
    ...
}
Для каждого из условий N1, N2, N3 сперва должен выполниться свой блок кода, а затем - общий. С goto код выглядит вполне аккуратным и читабельным.
Можно конечно насоздавать тут кучу дополнительных функций. Для каждой ветки. Но код станет гораздо менее читаемым. Если скажем после каждой case Nx идёт 2-3 строки кода, то здесь (с goto) всё на одном экране и легко читаемо.
"Грязный трюк" тут будет - налепить кучу ненужных функций.
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
29.10.2025, 09:45
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Все равно "на нижнем уровне" ваши "красивости" превратятся в итоге в те же goto…
Пусть превращается во что угодно - мне это не читать. Мне важно, чтобы (незнакомый или забытый) код был легко понятен.

Добавлено через 3 минуты
Цитата Сообщение от jcxz Посмотреть сообщение
Можно конечно насоздавать тут кучу дополнительных функций.
В данном примере достаточно одной функции (возможно, без входных параметров) для общего кода. Имя функции может служить "комментарием" (описанием, что делается), что даже упрощает понимание кода.
0
322 / 81 / 5
Регистрация: 19.07.2024
Сообщений: 447
29.10.2025, 12:08
Цитата Сообщение от Shamil1 Посмотреть сообщение
В данном примере достаточно одной функции (возможно, без входных параметров) для общего кода.
В смысле?
0
Windows must die
828 / 834 / 102
Регистрация: 23.11.2021
Сообщений: 4,851
Записей в блоге: 15
29.10.2025, 12:29
Видимо, имеется в виду вместо goto вызвать вложенную функцию, как здесь:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void processstate(state_t s){ 
...
    void commonN1N2N3(){
        ...
    }
...
    switch(s) {
      case N1:
        ...
        commonN1N2N3();
      break;
      case N2:
        ...
        commonN1N2N3();
      break;
      case N3:
        ...
        commonN1N2N3();
        ...
      break;
      default:
        ...
    }
}
Но этот способ значительно хуже в данном случае, т.к. связан с неоправданными затратами.
А если функцию commonN1N2N3 еще и вынести за пределы processstate, так вообще полная фигня получится, если она пользовалась какими-то внутренними переменными последней.

Зачем регистры туда-сюда гонять, еще и стек "спасать", если достаточно простого goto?
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
29.10.2025, 15:29
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Видимо, имеется в виду вместо goto вызвать вложенную функцию
Да. С захватом нужных переменных.

Цитата Сообщение от Eddy_Em Посмотреть сообщение
Зачем регистры туда-сюда гонять, еще и стек "спасать", если достаточно простого goto?
А если сделать функцию inline?

Добавлено через 6 минут
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Но этот способ значительно хуже в данном случае, т.к. связан с неоправданными затратами.
Опять низкоуровневая оптимизация.
0
Windows must die
828 / 834 / 102
Регистрация: 23.11.2021
Сообщений: 4,851
Записей в блоге: 15
29.10.2025, 17:42
Цитата Сообщение от Shamil1 Посмотреть сообщение
А если сделать функцию inline?
Не всегда gcc даже "true inline" функции инлайнит. Макрос надежней будет. Но это - повтор одних и тех же вещей. Для микроконтроллера - раздувание объема используемого флеша… Да и на ПК такой код будет жрать больше памяти, чем правильный.
Нужно стараться экономить ресурсы: на единицах байтов и наносекундах вполне могут вырасти мегабайты и миллисекунды, что уже плохо.
Цитата Сообщение от Shamil1 Посмотреть сообщение
оптимизация
А куда ж без нее? Оптимизировать нужно все, что будет запускаться больше нескольких раз… Меня, например, даже 100мс излишней "задумчивости" компьютера напрягают! Для МК стараюсь и объем флеша уменьшить, и быстродействие повысить, и ресурсов не отжирать слишком много.

Не по теме:


Если же забить на оптимизацию, всякие убогие "ардуины" и "php" рождаются. Вон, помню, мне студент жаловался, что не может залить код USB CDC на микроконтроллер STM32F103C4P6. Мол, флеша не хватает. Я знатно так подохренел, т.к. базис CDC - это 4кБ флеша, а ОЗУ зависит лишь от желаемого объема кольцевого буфера, в минимуме и килобайта хватит. А студент же пытался "калокубовский" USB сделать - а эти сволочи известны своим рукожопием. У них даже "мигалка светодиодом" в 1кБ кода не влезает!

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.10.2025, 17:42
Помогаю со студенческими работами здесь

Случаи удачного применения оператора goto
Доброе утро, уважаемые форумчане! Поделитесь, пожалуйста, вашими примерами удачного применения...

Правда ли, что "Goto: за и против" от Дейкстры - явная и сознательная монополизация рынка?
Ведь с помощью гото программировать мог каждый школьник, ДА нечитабельно и ДА не программу...

посоветоваться о эффективном алгоритме резервирования данных
Стоит задача реализовать резервирование данных в локальной одноранговой сети. При этом не...

Вопрос об эффективности приминения языков программирования.
Чё то я на свои вопросы не могу получить ответа. Как то всё медленно. В реале разговор продолжился...

Как эффективно обрабатывать значение Null?
Доброго времени суток. Подскажите, как эффективно обрабатывать значение Null. ...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru