[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.1309 Reply
я нуб, слоупок и ничего не понимаю в программировании.

но мне надо привязать действие объекта к определенной кнопке на клавиатуре

помогите пожалуйста!
>> No.1310 Reply
забыл добавить. это vb6
>> No.1311 Reply
>>1310
Я последний раз на вб лет 7 назад писал. Но даже тогда там все биндилось прямо из ынтерфейса. У нужного обжекта в евентах найти что-то типа KeyPress/KeyDown и нажать два раза. Оно само сделает шаблон функции и там будет среди входных значений и сканкод клавиши. Вот ифом сравниваешь его с нужным и выполняешь нужное тебе действие.

Алсо, нахуя, НУ НАХУЯ тебе вб?
>> No.1312 Reply
File: 121dffdbd3f1471785c4e005ddceff43-1.jpg
Jpg, 14.50 KB, 385×288 - Click the image to expand
edit Find source with google Find source with iqdb
121dffdbd3f1471785c4e005ddceff43-1.jpg
>>1311
а поцчему ви не любите вб?
>> No.1325 Reply
>>1312
Ибо это не язык, это херня.
Если нужны объектвиные причины - GOTO!!11111. И ебанутейший способ вызывать функции.
>> No.1326 Reply
>>1325
В плюсах тоже есть GOTO. А в x86 ассемблере без него вообще не прожить.
>> No.1327 Reply
>>1326
> А в x86 ассемблере без него вообще не прожить
Сравнил жопу с пальцем.
>> No.1329 Reply
>>1326
> В плюсах тоже есть GOTO.
Он много где есть. Наличие goto в языке не означает, что им надо пользоваться.
>> No.1330 Reply
>>1329
Конкретно в плюсах иногда действительно надо.
>> No.1335 Reply
>>1330
За goto в плюсах полагается расстрел на месте с последующим увольнением. Проблема в том, что goto обходит деструкторы, которые неявно вызываются перед "}".
>> No.1336 Reply
File: fsn_illya0017.jpg
Jpg, 43.13 KB, 704×396 - Click the image to expand
edit Find source with google Find source with iqdb
fsn_illya0017.jpg
>>1335
зачем ты вводишь в заблуждение?
http://codepad.org/ZPDsw5VK

также
6.6 Jump statements                                                                               [stmt.jump]
Jump statements unconditionally transfer control.
     jump-statement:
                break ;
                continue ;
                return expressionopt ;
                goto identifier ;
On exit from a scope (however accomplished), destructors (12.4) are called for all constructed objects with     automatic storage duration (3.7.2) (named objects or temporaries) that are declared in that scope, in the
reverse order of their declaration.
>> No.1341 Reply
>>1336
Да, ты глубоко прав. У меня сильно устаревшие сведения. Спасибо тебе, анон.
>> No.1342 Reply
File: 1254001912515.jpg
Jpg, 101.47 KB, 585×414 - Click the image to expand
edit Find source with google Find source with iqdb
1254001912515.jpg
>>1335
> Проблема в том..
Проблема в том, что goto убивает на корню идею формальной верификации программы, когда правильность её работы можно доказать логикой. А не обмазывать каждую функцию мильёнами юнит-тестов, что обожают делать работники за бананы.
>> No.1343 Reply
>>1342
Вай со батхёрт? Иногда код с goto выглядит элегантее надстроек с if или for. Но это только иногда.
> формальной верификации программы
а как доказать, что я нигде не перепутал имена переменных?
>> No.1344 Reply
>>1342
> goto убивает на корню идею формальной верификации программы
Обоснуй.
>> No.1345 Reply
File: 1242124278442.jpg
Jpg, 116.54 KB, 393×640 - Click the image to expand
edit Find source with google Find source with iqdb
1242124278442.jpg
>>1342
Проблема в том, что неструктурированная рекурсия убивает на корню идею формальной верификации программы, когда правильность её работы можно доказать логикой.
А goto после этого уже насрать, как-то так.
%%читни-ка лучше книжца: http://eprints.kfupm.edu.sa/42239/1/42239.pdf%%
>> No.1346 Reply
>>1345
fsx: А на goto
>> No.1347 Reply
>>1345
C++ != "functional programming"
>> No.1348 Reply
>>1347
Ага, и в чем тогда смысл выебонов с отказом от goto и пр.?

капча высаживает
>> No.1349 Reply
>>1348
Как раз это я и хотел узнать.
>> No.1350 Reply
>>1349
Вот и я считаю, это лишено смыла. А MSIL-оёб что-то выпендривается. Нормальный способ выхода из вложенных циклов. Я сам goto использовал. Раза три за пять лет.
>> No.1351 Reply
File: goto.png
Png, 25.60 KB, 740×201 - Click the image to expand
edit Find source with google Find source with iqdb
goto.png
>>1350
Получается то, что Дейкстру (прочитай хоть на википедии, там ссылка внизу есть) ты не читал.

Выйти из вложенных циклов? Это делается легко: используются функции (возврат значения), а не огород из вложенных циклов.
Это - нормальный способ.

Затраты на вызов функции на оценку зависимости времени работы от размера задачи не влияют, только на константу. В то же время, программа не теряет своей стройности, к ней можно применять доказательство, её легче поддерживать. Не возникает тысячи новых состояний из за того, что произошла "телепортация" по goto.
Если программа на языке высокого уровня требует наличия goto - это явная ошибка дизайна, если речь не идёт о программировании утюга, в котором слабо железо даже для вызова функции.

Отказ от goto - это как desu, без этого стыдно.
>> No.1353 Reply
>>1351
> используются функции (возврат значения), а не огород из вложенных циклов
Что используется?
>> No.1354 Reply
>>1353
Вам повторить?
>> No.1355 Reply
>>1354
Ты можешь привести пример "правильного" выхода из нескольких вложенных циклов за раз?
например, как бы ты преобразовал этот "плохой" код?
for(i=0; i<1000; i++)
   for(j=0; j<1000; j++)
for(k=0; k<1000; k++)
  if(f(i,j,k)==-1)
    goto out;
out:
>> No.1356 Reply
Друзья мои! Как же вы задрали фейлить разметку! Перед каждой строкой кода вставьте по 4-е дополнительных пробела и будет очень няшно!
for(i=0; i<1000; i++)
  for(j=0; j<1000; j++)
    for(k=0; k<1000; k++)
      if(f(i,j,k)==-1)
        goto out;
out:
>> No.1357 Reply
File: 0chan.jpg
Jpg, 77.57 KB, 824×761 - Click the image to expand
edit Find source with google Find source with iqdb
0chan.jpg
>>1351
> Получается то, что Дейкстру (прочитай хоть на википедии, там ссылка внизу есть) ты не читал.
Не, не читал. По крайней мере "GOTO Considered Harmful" не читал, это лет 20 назад актуально было, и то только для тех, кто не знал про LNSP.
> Это - нормальный способ.
Не всегда имеет смысл городить огород из функций.
> к ней можно применять доказательство
Ага, покажи-ка какую-нибудь систему доказательств для императивного языка, десу.
>> No.1358 Reply
>>1356
>>1355

Я в f добавил глупую проверку просто так.
Вариант без goto вернёт ещё и количество итераций.
> Ага, покажи-ка какую-нибудь систему доказательств для императивного языка, десу.
Ну я недавно верифицировал программу, методом флойда. Подходит как система доказательства? Их же много. Не одним тестированием живём.
Ещё тестировал по госту, лол, даже не знаю, как можно тестировать с goto. Для меня высокая сложность этого очевидна. Проще отказаться от goto.

У меня тут какая-то ошибка при загрузке, поэтому присылаю в тексте сообщения.

#include "stdafx.h"
#include <iostream>
using namespace std;

int f(int i, int j, int k)
{
   if((i == j) && (j == k) && (j > 128) && (k % 4 == 0))
   {
   return -1;
   }
   else
   {
   return 0;
   }
}

// без goto
int Iterate()
{
   // Циклы внутри я бы тоже обернул в функции, если бы знал из смысл
   int iters = 0;
   for(int i=0; i<1000; i++)
   {
	for(int j=0; j<1000; j++)
   {
   for(int k=0; k<1000; k++)
   {
iters++;
if(f(i,j,k)==-1)
{
	return iters;
}
   }
   }
   }
}


int tmain(int argc, TCHAR* argv[])
{
   // Используем goto
   int iters = 0;
   for(int i=0; i<1000; i++)
   {
	for(int j=0; j<1000; j++)
   {
   for(int k=0; k<1000; k++)
   {
iters++;
if(f(i,j,k)==-1)
{
	goto out;
}
   }
   }
   }

out:
   cout << "</goto>, iterations = " << iters;


   // Не используем goto
   iters = Iterate();
   cout << "</no_goto>, iterations = " << iters;

   return 0;
}
>> No.1359 Reply
>>1358
Ну сколько можно повторять?
> Друзья мои! Как же вы задрали фейлить разметку! Перед каждой строкой кода вставьте по 4-е дополнительных пробела и будет очень няшно!
Читать эту кашу из разных шрифтов, отступов и курсива весьма затруднительно же.
>> No.1360 Reply
>>1359
Я пытался прислать файл, а доброчан отказался.
Там то же самое, только комментарии поело
http://pastebin.com/d321c9032
>> No.1361 Reply
>>1360
Ага, все циклы засунуты в функцию, а goto заменено на return.
Алсо, слишком много фигурных скобок.
>> No.1362 Reply
File: IMG_0103.JPG
Jpg, 214.13 KB, 1200×1600 - Click the image to expand
edit Find source with google Find source with iqdb
IMG_0103.JPG
>>1361
Ждал такого ответа.
> Ага, все циклы засунуты в функцию, а goto заменено на return.
Моей целью было показать, что от goto можно легко отказаться и нет алгоритма высокого уровня, который бы требовал наличия goto. Если алгоритм реальный, то декомпозиция продолжается и циклы вообще скрываются за функциями. Цикл - а внутри него return (вызов функции()), внутри неё может быть похожее.Тут же было так не сделать (сказали бы что запутал), да и не нужно, в общем.
> Алсо, слишком много фигурных скобок.
Мне так понятнее, а расходы времени на трансляцию такого дела считаю незначительными. Да и приучили. Чего место то жалеть, все ж свои.
Вот только на f# часто хочется скобочек поставить, ничего не могу с собой поделать, но это уже совсем другая история.
>> No.1363 Reply
>>1362
Идею понял.
Лишние скобки не нужны.
> Тут же было так не сделать
ЕБАЛ ЕЁ РУКА
>> No.1364 Reply
>>1360
Интересный способ избавления. Только ведь для формальной верификации ещё и от указателей придётся избавиться, так? А если один из аргументов f(i,j,k) - именно указатель на большой блок данных(например, пользовательский ввод), определённый где-то выше по коду?

>>1356
Спасибо же! Не знал, хотя как-то не очень удобно это.
>> No.1367 Reply
>>1364
> как-то не очень удобно это.
Разве для доброкодера автозамена "\n" на "\nчетыре пробела" - это что-то сложное?
>> No.1368 Reply
>>1367
То есть ты предлагаешь прогонять весь код, который хочешь здесь запостить, через sed или что-то подобное? А не удобнее ли было бы просто ввести специальную последовательность символов как во всем ненавистных спойлерах?
>> No.1369 Reply
File: sample-d0287e68be3b01e75fea25d5bb89f87d.jpg
Jpg, 173.01 KB, 850×637 - Click the image to expand
edit Find source with google Find source with iqdb
sample-d0287e68be3b01e75fea25d5bb89f87d.jpg
>>1364
> Только ведь для формальной верификации ещё и от указателей придётся избавиться, так?
Никогда не верифицировал чего-либо с указателями. То было на c#. На c++ тоже бы не использовал. Скорее придётся избавиться, чем нет. Тут какое дело - описать логикой сам факт наличия чего-либо нужного по указателю при входе в программу (как ввод, например) - это легко. А вот строить из алгоритма с указателями доказательство, наверное, не получится. По крайней мере, у меня так точно. Массивы можно использовать, хотя даже они головной боли добавят. Потом и не хочется больше приключений.
Конечно, это грустно. Возможно не прав (ну или лев, кому как по душе).
>> No.1370 Reply
>>1368
Последовательность есть, только вот как и во всем ненавистных спойлерах она однострочная и символы перехода на новую строку разметку зафейлят.
>> No.1371 Reply
>>1369
> строить из алгоритма с указателями доказательство, наверное, не получится
Тогда уже, наверное, это получается глобальная проблема всех плюсов, а далеко не одного goto, что код на них верифицируется с трудом и вообще для подобных вкусностей мало годен? :3
>> No.1372 Reply
>>1371
(хотя, если подумать, я и как в функциональных языках эффективно передавать между функциями большие массивы данных не могу взять в толк...)
>> No.1373 Reply
>>1371
> Тогда уже, наверное, это получается глобальная проблема всех плюсов, а далеко не одного goto, что код на них верифицируется с трудом и вообще для подобных вкусностей мало годен? :3
Ну если в общем, то да. В общем и целом верификация программы сложна вне зависимости от языка. Поэтому пока программисты есть и тестирование нужен. Ключевое слово "с трудом".
С научными работами на эту тему едут на запад сразу же, сами знаете куда.

Для передачи больших блоков данных в фп можно использовать списки, массивы, объекты, т.д Внутри - тоже указатели, но программист не указывает просто куда-то на некий участок памяти.
>> No.1462 Reply
>>1370
был не прав, 
чтобы сделать
огромный блок
мошошириного текста,
неподверженного разметке,
нужно
в качестве первой и последней строки блока
написать ровно по две обратные кавычки (`) 
>> No.1465 Reply
>>1462
Это очень
интересно
>> No.1466 Reply
Лучше бы запилили, как на нульче, обычную подстветку с тегами, а не ебали мозг.
>> No.1467 Reply
File: pHash.cpp
Cpp, 0.06 KB, 0 lines - Click the image to get file
view edit
pHash.cpp
>>1466
Для кода, которому нужна подсветка, есть аттачи же
>> No.1468 Reply
>>1467
Неудобное говно.
>> No.1470 Reply
>>1467
вот если поменять местами view и dl, то будет удобно.
А так - %говно%неочень.


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]