Другое > Hard'n'Soft
Програмирование на C++
<< < (19/25) > >>
GManiac:

--- Цитата ---у паскаля возможностей же меньше
--- Конец цитаты ---
Столько же. В чём-то меньше, в чём-то больше. Я имею в виду дельфи, т.к. в древнем паскале не вижу смысла (вот тут не надо вспоминать про другие реализации паскаля и про то, что язык в дельфях называется Object Pascal, сегодня он официально называется Дельфи). Директивы препроцессора есть. ОО примочки есть, видимость членов, class var, class procedure, проперти, методы структур, метаклассы, интерфейсы, перегрузка, шаблоны, полиморфизм и дры и дры, короче, хватает. Есть свои особенности у дельфей и у сей, но я с дельфями не испытывал проблем типа "вот такой фишки катастрофически не хватает". А вот пропертей мне не хватало в сях, я нашёл где-то огромный макрос для их имитации, но компилятор VC сильно ругался, выдавая какую-то внутреннюю ошибку (т.е. его конкретно клинило), пока я не понял, что его замыкает именно из-за этих макросов. Правда, в BC проперти были, но мне нужен был VC.
Просто дело в том, что си изначально позиционируется как "серьёзный язык", поэтому его курс изучения более обширный, чем паскалевский. Типа если взялся за си, изучай всё сразу. В сях те же директивы препроцессора считаются обычным делом, поэтому их включают в стандартный курс по изучению языка. Разбивка на интерфейс и реализацию в разных файлах (правда, формально это правильно). Постоянная возня со ссылками и указателями - тоже обычное дело, поэтому их тоже включают в курс. Но это не значит, что в дельфях этого нет. Кому надо, тот может использовать ссылки на переменные, записать что угодно по адресу любой переменной. Массивы как параметры функций (я имею в виду, когда параметр объявлен как array of, без размерности, тогда можно использовать любые индексы, но фактически передаётся адрес этого массива или того индекса, с которого надо начинать, который ты укажешь при вызове функции (массив как бы сдвигается на нужную позицию). При этом не надо заморачиваться ни с какими звёздочками и другими закорючками или постоянно помнить, что идентификатор массива в сях = его нулевой элемент). Пример:
function sum( const a : array of integer ) : integer;
begin
  Result := a[ 0 ] + a[ 1 ];
end;

var
  dyn_mas : array of integer;
  stat_mas : array[ 1..5 ] of integer;
begin
  sum( dyn_mas );
  sum( dyn_mas[ 3 ] );
  sum( stat_mas );
end;


Или так:
function sum( const a : array of integer ) : integer;
var
  i : integer;
begin
  Result := 0;
  for i := low( a ) to high( a ) do inc( Result, a[ i ] );
end;

begin
  sum( [ 1 ] ); //
  sum( [ 2, 4, 9, 3 ] ); //
end;
А те возможности, которых нет... А так ли они вообще нужны? Например, множественное наследование. Я уверен, что если тебе вдруг доведётся сопровождать чужой код, в котором много множественного наследования, ты начнёшь его проклинать.

И вообще, как я уже сказал, возможности нарастить можно любые. Но синтаксис языка останется.


--- Цитата: Mr2 от 24 Май 2011, 20:26:29 ---Можешь также вызывать указатель на класс  без ->.
(*obj).one;
--- Конец цитаты ---
Один хрен лишние символы и различный синтаксис для классов и структур. Во-первых, зачем я должен постоянно помнить об этих различиях? А во-вторых, если я вдруг поменяю класс на структуру или наоборот (в дельфях запросто), мне теперь все обращения менять?


--- Цитата ---Это зависит не от языка, а от выбора программиста.
--- Конец цитаты ---
От языка тоже зависит. Есть пример из Фортрана, где запятая или точка в коде меняет смысл этого кода. Надо понимать, что люди не машины, поэтому синтаксис должен быть составлен так, чтобы облегчить жизнь людям. В сях он не очень дружественный.
Mr2:

--- Цитата: GManiac ---Один хрен лишние символы и различный синтаксис для классов и структур. Во-первых, зачем я должен постоянно помнить об этих различиях?
--- Конец цитаты ---
Ну потому что структуры это структуры, а класс это класс! :D
И не такой уж он и различный.

--- Цитата: GManiac ---А во-вторых, если я вдруг поменяю класс на структуру или наоборот (в дельфях запросто), мне теперь все обращения менять?
--- Конец цитаты ---
Ну это же по детски. А если я захочу поменять имя переменной, что мне его в каждой строчке менять?
Отношение к классам серьёзное, если предётся менять класс на структуру или наоборот, то скорее всего это ошибка в проэктировании.

--- Цитата: GManiac ---От языка тоже зависит.
--- Конец цитаты ---
Я говорю что язык даёт большие возможности, а использовать их или нет это решает программист.Его никто не заставляет использовать указатели, классы, контейнеры.....
gepar:

--- Цитата: GManiac --- Во-первых, зачем я должен постоянно помнить об этих различиях?
--- Конец цитаты ---
Ну ты же запомнил что int хранит только целые числа  :)

--- Цитата: GManiac ---А во-вторых, если я вдруг поменяю класс на структуру или наоборот (в дельфях запросто), мне теперь все обращения менять?
--- Конец цитаты ---
Меняй сколько влезет туда-сюда, абсолютно ничего не поменяется (если указаны изначально спецификаторы public и private), вызов через стрелку нужен для указателей в любом случае.

--- Цитата: GManiac ---Разбивка на интерфейс и реализацию в разных файлах (правда, формально это правильно).
--- Конец цитаты ---
Ну это не обязательно, хотя и удобно.

--- Цитата: GManiac ---Постоянная возня со ссылками и указателями - тоже обычное дело, поэтому их тоже включают в курс.
--- Конец цитаты ---
Да что вы все с этими указателями не помиритесь, удобная штука и если раз до конца разобраться то больше с ней проблем не будет возникать, не понимаю почему их все так не любят и не могут понять что же он из себя представляет .

--- Цитата: GManiac --- Массивы как параметры функций (я имею в виду, когда параметр объявлен как
 array of, без размерности, тогда можно использовать любые индексы, но фактически передаётся адрес этого массива или того индекса, с которого надо начинать, который ты укажешь при вызове функции (массив как бы сдвигается на нужную позицию).
--- Конец цитаты ---
Так в с++ так же и точно так же как и в делфи с одномерным массивом это прокатывает, а если больше пространств то нужно указывать все кроме первого.

--- Цитата: GManiac ---При этом не надо заморачиваться ни с какими звёздочками и другими закорючками или постоянно помнить, что идентификатор массива в сях = его нулевой элемент).
--- Конец цитаты ---
Ну то что в с++ считается всё с 0 это же классика, но никто не запрещает не использовать 0 элемент, заполняй и используй в циклах элементы начиная с 1го и всё если так не нравиться цифра 0.
Ещё описывание всех переменных что надо отдельно вверху это конечно с одной стороны приучает к порядку, но блин это адски неудобно постоянно вдруг что понадобиться лезть и дописывать и сводит на нет локальность переменных.

--- Цитата: GManiac ---Например, множественное наследование.
--- Конец цитаты ---
Ну когда сам что-то делаешь то оно лишним не бывает, хотя я использовал раза 3 пока что .
Ну а синтаксис вещь такая что раз запомнил и всё, не так уж и много зарезервированных слов, которые часто используются так что запоминаются они быстро.

Добавлено позже:

--- Цитата: Mr2 ---Ну это же по детски. А если я захочу поменять имя переменной, что мне его в каждой строчке менять?Отношение к классам серьёзное, если предётся менять класс на структуру или наоборот, то скорее всего это ошибка в проэктировании.
--- Конец цитаты ---
Какая ошибка в проэктировании? Между ними в с++ разници никакой кроме того что в структуре по умолчанию без спецификатора доступа всё public, а в классе private. Больше никаких различий между ними нет.
Mr2:

--- Цитата: gepar ---Ещё описывание всех переменных что надо отдельно вверху это конечно с одной стороны приучает к порядку, но блин это адски неудобно постоянно вдруг что понадобиться лезть и дописывать и сводит на нет локальность переменных.
--- Конец цитаты ---
В C++ в любом месте можно переменную объявлять.Или ты не про C++? ;)

--- Цитата: gepar ---Какая ошибка в проэктировании? Между ними в с++ разници никакой кроме того что в структуре по умолчанию без спецификатора доступа всё public, а в классе private. Больше никаких различий между ними нет.
--- Конец цитаты ---
У меня в кармане нет Ничего, ничего кроме полного кармана конфет. Как то неоднозначно звучит. Это очень большая разница.
Почему проанализируй сам.(если не справишья обращяйся)

--- Цитата: Mr2 ---И не такой уж он и различный.
--- Конец цитаты ---
В смысле синтаксис.
GManiac:
Mr2, про точки и стрелки.
gepar, про указатели и ссылки.
Коротко: зачем нужны лишние телодвижения, запоминать ненужные различия и потом о них вспоминать, когда можно обойтись без всего этого?
То же и с логическими и битовыми операторами. Лёгкая возможность спутать вместе логическое выражение и арифметические - это бред уже при проектировании самого языка. Пускай си делался как надстройка над асмом, но такая фишка даже в этом случае неактуальна, имхо. У 68к специально был набор команд SCC (Set if Condition), для вычисления логических выражений. Команда Sсс устанавливала байт $FF (-1), если условие верное, или $00, если неверное. Для таких байтов и арифметические и логические операции одинаковы: 0 and FF = 0, 0 or FF = FF, not 0 = FF. Выражение "if (var) ..." не дружественно человеку (var <> 0). Синтаксически не очевидно, что оно значит.
Возможность присваиваний внутри выражений (в т.ч. в условиях) тоже ничего хорошего не сулит. Опять же, человек не машина. Правильнее предотвратить допущение таких простых ошибок, чем валить вину и лишнюю работу на человека. Ремни безопасности придуманы не для того, чтобы брать штрафы.

Я почему вообще залез в эту тему, потому что наблюдая её, в последних страницах вижу, что gepar что-то мутит (усложняет), пытаясь выполнить какую-нибудь ерунду (в смысле что-то простое). Задача программиста (и не только) сделать проще, быстрее и понятнее.
Mr2:

--- Цитата: GManiac от 24 Май 2011, 23:45:06 ---Mr2, про точки и стрелки.
--- Конец цитаты ---
Всё просто, не знаю в чём проблема. ;)

--- Цитата: GManiac от 24 Май 2011, 23:45:06 ---Коротко: зачем нужны лишние телодвижения, запоминать ненужные различия и потом о них вспоминать, когда можно обойтись без всего этого?
--- Конец цитаты ---
Я и говорю что можно программировать и без указателей, и без всего что тебе не нравится.

--- Цитата: GManiac от 24 Май 2011, 23:45:06 ---То же и с логическими и битовыми операторами. Лёгкая возможность спутать вместе логическое выражение и арифметические - это бред уже при проектировании самого языка. Пускай си делался как надстройка над асмом, но такая фишка даже в этом случае неактуальна, имхо. У 68к специально был набор команд SCC (Set if Condition), для вычисления логических выражений. Команда Sсс устанавливала байт $FF (-1), если условие верное, или $00, если неверное. Для таких байтов и арифметические и логические операции одинаковы: 0 and FF = 0, 0 or FF = FF, not 0 = FF. Выражение "if (var) ..." не дружественно человеку (var <> 0). Синтаксически не очевидно, что оно значит.

--- Конец цитаты ---
Всё просто, нужен логический пиши два символа || .Это как ЖЫ, ШЫ пиши с мягким знаком :lol:.

--- Цитата: GManiac от 24 Май 2011, 23:45:06 ---Возможность присваиваний внутри выражений (в т.ч. в условиях) тоже ничего хорошего не сулит. Опять же, человек не машина. Правильнее предотвратить допущение таких простых ошибок, чем валить вину и лишнюю работу на человека. Ремни безопасности придуманы не для того, чтобы брать штрафы.
--- Конец цитаты ---
Серьёзных проблем никогда не вызывало.(Возможность присваиваний внутри выражений)

--- Цитата: GManiac от 24 Май 2011, 23:45:06 ---Я почему вообще залез в эту тему, потому что наблюдая её, в последних страницах вижу, что gepar что-то мутит (усложняет), пытаясь выполнить какую-нибудь ерунду (в смысле что-то простое). Задача программиста (и не только) сделать проще, быстрее и понятнее.

--- Конец цитаты ---
Это наверное из за той книжки что он читает.(Мудрят Дейтлы!  :) )
GManiac:
Короче, всё понятно ;)

Добавлено позже:

--- Цитата ---Всё просто, нужен логический пиши два символа || .Это как ЖЫ, ШЫ пиши с мягким знаком .
--- Конец цитаты ---
Всё просто, хочешь завести машину, вылезай, раскручивай стартёр, потом садись, крути рычаги и в путь! Хотя ведь можно проще, одной кнопочкой, но зачем? ;)
MetalliC:

--- Цитата: GManiac ---Mr2, про точки и стрелки.gepar, про указатели и ссылки.
Коротко: зачем нужны лишние телодвижения, запоминать ненужные различия и потом о них вспоминать, когда можно обойтись без всего этого?
--- Конец цитаты ---
коротко: чтобы компилятор выдал именно такой код, какой хочет программист.

если я пишу на С, я уже довольно точно знаю во что это будет скомпилировано
да и ты же вроде с как минимум одним асмом знаком ? тогда не должно возникать вопросов про указатели/ссылки и т.п.
Mr2:

--- Цитата: GManiac от 25 Май 2011, 00:30:47 ---Добавлено позже:
Всё просто, хочешь завести машину, вылезай, раскручивай стартёр, потом садись, крути рычаги и в путь! Хотя ведь можно проще, одной кнопочкой, но зачем? ;)

--- Конец цитаты ---
Всё просто, тормаза придумал трус, а сцепление вообще непонятно зачем нужно.... :(
Всегда можно лучше, можно хуже, но мы имеем то что имеем.Тут дело скорее устраивает это тебя или нет.
gepar:

--- Цитата: GManiac ---Коротко: зачем нужны лишние телодвижения, запоминать ненужные различия и потом о них вспоминать, когда можно обойтись без всего этого?
--- Конец цитаты ---
Звучит как "давайте использовать только double, int на мыло - он ущербный!"  :) Ну не используй указатели, в дельфи обходишься вот и здесь значит смог бы обойтись (хотя с ними удобнее же).

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

--- Цитата: GManiac ---Я почему вообще залез в эту тему, потому что наблюдая её, в последних страницах вижу, что gepar что-то мутит (усложняет), пытаясь выполнить какую-нибудь ерунду (в смысле что-то простое). Задача программиста (и не только) сделать проще, быстрее и понятнее.
--- Конец цитаты ---
Ну вот, теперь я мутю да ещё и виноватый  :D Я просто не ищу лёгкие способы (да, я мог изначально перекопировать всё из своего символьного массива и всё), мне интересно как это можно сделать по другому. Как видишь в с++ всё не столь прямолинейно и существует очень много стандартных возможностей, о которых я и спрашиваю в теме. А вот есть ли в дельфи возможность запихнуть в буфер входящих данных данные для ввода чтобы при будущем запросе на чтение данных в переменную из буфера потока были взяты нужные данные).  Только давайте не будем трогать эмуляцию нажатий клавиатуры, это получиться уж очень сложно (в смысле кода много, а пользы мало).

--- Цитата: GManiac ---Всё просто, хочешь завести машину, вылезай, раскручивай стартёр, потом садись, крути рычаги и в путь! Хотя ведь можно проще, одной кнопочкой, но зачем?
--- Конец цитаты ---
А вот это какраз про дельфи, хочешь новый локальный счётчик - листай n страниц назад и дописывай новую переменную для своего счётчика в объявления.
HardWareMan:

--- Цитата: gepar от 24 Май 2011, 20:10:49 ---...а вот дельфи после паскаля что-то показалась мечтой быдло-программиста (программирование мышкой же!) и я после созданий пары кнопок да окошек (без путеводителя найти ничего невозможно, даже банально откомпилировать скопипащенный код) закинул это дело.
--- Конец цитаты ---
Т.е., ты никогда не программил на VС и всегда программишь на чистом API, описывая окна и его элементы по ходу исполнения программы, да? Не смеши мои тапки. Любая ГУевая программа требует определенного затрата человека-часов на, как ты назвал, "программирование мышкой". А сколько такого "программирования" занимает программирование под 1С, ты бы только знал... Пиши консольные вещи для гиков на чистом API. В виндах тебе делать нечего, я так считаю.

PS Реально работающий код:

--- Код: ---var
  EN:array of record
          Number,Variant:dword;
          Mess:string;
          end;
  RU:array of array of string;

// При ините
  SetLength(EN,0); SetLength(RU,0);

// При загрузке данных
     MySQLResult:=MySQLClient.Query('SELECT ID, Message FROM EN ORDER BY ID ASC', True, OK);
     if OK and (MySQLResult.RowsCount>0) then begin
        SetLength(EN,MySQLResult.RowsCount);
        MySQLResult.First;
        for c:=0 to MySQLResult.RowsCount-1 do begin
            EN[c].Number:=GetNumBytes(MySQLResult.FieldValue(0));
            EN[c].Variant:=0;
            EN[c].Mess:=MySQLResult.FieldValue(1);
            MySQLResult.Next;
            end;
        end;
     v:=0;
     repeat
       MySQLResult:=MySQLClient.Query('SELECT Number, Variant, Message FROM RU WHERE Variant="'+ToUTF8(IntToStr(v))+'" ORDER BY Number ASC', True, OK);
       if OK and (MySQLResult.RowsCount>0) then begin
          SetLength(RU,Length(RU)+1);
          if v=0 then SetLength(RU[v],MySQLResult.RowsCount)
                 else SetLength(RU[v],Length(RU[0]));
          MySQLResult.First;
          for c:=0 to Length(RU[v])-1 do RU[v][c]:='--';
          for c:=0 to MySQLResult.RowsCount-1 do begin
              if GetNumBytes(MySQLResult.FieldValue(0))<Length(RU[v]) then
                 RU[v][GetNumBytes(MySQLResult.FieldValue(0))]:=FromUTF8(MySQLResult.FieldValue(2));
              MySQLResult.Next;
              end;
          end;
       inc(v);
     until (MySQLResult.RowsCount=0) or not OK;

// А для обнуления достаточно
     SetLength(EN,0); SetLength(RU,0);

--- Конец кода ---
GManiac:

--- Цитата: MetalliC от 25 Май 2011, 00:34:13 ---коротко: чтобы компилятор выдал именно такой код, какой хочет программист.
--- Конец цитаты ---
Если хочешь такой код, используй асм. Никакой си его не даст. Обычно компиляторы си дают более оптимизированный код, чем дельфя, но дело не в языке, а в оптимизаторе. (В частности поэтому дельфи так быстро компилирует). У того же си билдера код медленнее работает. Проверял на своём эмуле SN76489, перегнал с дельфей на BCB, потом на VC. Код BCB оказался в 2 раза медленней, а VC - в 1.5 раза быстрее дельфишного.
Приведи реальные примеры из реальных приложений, где си выполняет роль ЯВУ (а не перевирание асма), когда необходимо смешивать логические и арифметические значения. Для человека это две разные вещи.


--- Цитата ---тогда не должно возникать вопросов про указатели/ссылки и т.п.
--- Конец цитаты ---
хы, да на сях всё запутанней :) В асме есть всего два случая операндов: immediate и address. Изредка указатель на адрес.



--- Цитата ---Звучит как "давайте использовать только double, int на мыло - он ущербный!"
--- Конец цитаты ---
Ну, для целых и вещественных типов арифметика немного разная, а в целом - да, МЕНЬШИЕ типы были актуальны из-за прошлых ограничений. Для отдельных переменных сегодня это почти не актуально, если ты быдлокодишь, а не пишешь системную прогу. Выигрыш в скорости будет почти не ощутим. Зато если вдруг из-за переполнения твоя прога перестанет нормально работать, испытаешь головную боль ;)

Mr2, напиши на сях мои примеры отсюда:
http://www.emu-land.net/forum/index.php/topic,49888.msg722215.html#msg722215


--- Цитата ---А вот это какраз про дельфи, хочешь новый локальный счётчик - листай n страниц назад и дописывай новую переменную для своего счётчика в объявления.
--- Конец цитаты ---
Да, это скорее минус дельфей, т.к. он мешает соблюдению локальности переменной (с точки зрения программиста), т.е. переменная должна использоваться как можно в меньшем промежутке текста, без ущерба логике программы.
Модули в n страниц говорят о плохом программисте ;)


--- Цитата ---Это хорошо что ты напомнил, не любил я это в паскале, но забыл до какой степени не любил, теперь вспомнил.
...
Как видишь в с++ всё не столь прямолинейно и существует очень много стандартных возможностей, о которых я и спрашиваю в теме.
--- Конец цитаты ---
Для тебя языки это пока что "поиграться", а для меня это работа. Если тебе придётся работать с чужим непрямолинейным, нестандартным или медитативным кодом (а можно и с собственным, но написанным в прошлом) в проекте хотя бы на 50 тыщ строк, заговоришь по-другому ;)

На сях самая большая и реальная программа, которую я делал, был дизасм
http://www.emu-land.net/forum/index.php?topic=15957.0
, а позже анализатор кода на его основе. Щас понимаю, что написать это на дельфях было бы проще и быстрее.


Да, вот что хотел спросить. Можно объявлять функции без указания имён параметров:
void func( int )
{}

Вопрос: КАК их использовать в теле функции?
gepar:

--- Цитата: GManiac ---На сях самая большая и реальная программа, которую я делал, был дизасмhttp://www.emu-land.net/forum/index.php?topic=15957.0
--- Конец цитаты ---
Не запускается.

--- Цитата: GManiac ---Да, вот что хотел спросить. Можно объявлять функции без указания имён параметров:void func( int ){}Вопрос: КАК их использовать в теле функции?
--- Конец цитаты ---
Это будет не обявление а прототип, дальше потом опишешь эту функцию и назовёшь её параметры как угодно, если ты писал приложение то по идеи должен был слышать об этом.

--- Цитата: HardWareMan ---Т.е., ты никогда не программил на VС и всегда программишь на чистом API, описывая окна и его элементы по ходу исполнения программы, да? Не смеши мои тапки. Любая ГУевая программа требует определенного затрата человека-часов на, как ты назвал, "программирование мышкой".
--- Конец цитаты ---
Так а в visual в этот раз я сразу не прыгал с головой, я пока с консолью хочу доразбираться   :)

Добавлено позже:
Кстати типичный срач c++ VS Delphi воочию, не думал что он доберётся до эму-ленда  :)
GManiac:

--- Цитата: gepar от 25 Май 2011, 11:26:59 ---Не запускается.
--- Конец цитаты ---
Шутишь? Это консольное приложение. Из командной строки запусти, увидишь параметры запуска.


--- Цитата ---Это будет не обявление а прототип, дальше потом опишешь эту функцию и назовёшь её параметры как угодно,
--- Конец цитаты ---
Емнип, в объявлении тоже так можно написать.

Добавлено позже:
Да, только что в VC проверил. Можно создать дефайн функции с параметрами без имён.
gepar:

--- Цитата: GManiac ---Да, только что в VC проверил. Можно создать дефайн функции с параметрами без имён.
--- Конец цитаты ---
Можно и не define ... и что? :) С++ не так сильно ограничивает тебя по этому поводу (по началу после паскаля это раздражает, а потом - наоборот), нужна тебе функция с параметром - на тебе функция с параметром. Вот тебе пример как применить это

--- Код: ---void a(int)
{
    cout<<"GMan";
}

void a()
{
    cout<<"iac";

}


int main ()
{
    a(100500);
    a();
}


--- Конец кода ---
Mr2:

--- Цитата: GManiac ---Mr2, напиши на сях мои примеры отсюда:
--- Конец цитаты ---
Я только С++ знаю. :blush:
В Delphi даже не вникал. Меня всё устраивает в C++, ну вот только двумерный динамический массив както смутил. ;)
gepar:

--- Цитата: GManiac ---Шутишь? Это консольное приложение. Из командной строки запусти, увидишь параметры запуска.
--- Конец цитаты ---
...

Добавлено позже:

--- Цитата: Mr2 ---В Delphi даже не вникал. Меня всё устраивает в C++, ну вот только двумерный динамический массив както смутил.
--- Конец цитаты ---
Почему? Всё логично ведь и также как и в других языках - создаём массив массивов,  главное потом когда будешь удалять свой динам. массив не забыть []. А вообще мне динам. массив понадобился единожды чтобы сдать одну лабу, больше нигде не применял.

Добавлено позже:
За срачём мой вопрос был не замечен  :(
Как в дебагере отслеживать состояния вх. и исх. потоков? Я вообще до этого дебагером не пользовался и ожидал что будет что-то вроде workspace матлаба где будет состояние всех переменных, история ввода-вывода, а на деле я получил только возможность следить за переменными в данный момент и изменять их значения на ходу (после изменения символа 'a' в перменной на 'b' моя программа сразу же завершилась почему-то :( ) и... и всё. Что же мне вводить в поле "следить за..." чтобы проследить за потоками подскажите пожалуйста.
Mr2:

--- Цитата: gepar ---Почему?
--- Конец цитаты ---
В начале вот так его создал:

--- Код: ---int *pArray
pArray =new int[val1][val2];
--- Конец кода ---
Когда выдало ошибку, пришлось создавать массив массивов. ;)
Теперь при старте программы появилась небольшая пауза, видимо массив массивов создаётся. :?

--- Цитата: gepar ---А вообще мне динам. массив понадобился единожды чтобы сдать одну лабу, больше нигде не применял.
--- Конец цитаты ---
Я делал под нумерацию  анимации спрайта.

--- Код: ---ani[type][kadr];
--- Конец кода ---
gepar:
GManiac,кстати учитывая твою любовь к указателям повторю картинку что я здесь постил после НГ.
GManiac:

--- Цитата ---Можно и не define ... и что?
--- Конец цитаты ---
Под дефайном я имел в виду определение тела функции, в отличие от декларейшна (объявление заголовка). И там, и там можно не давать имя параметру. Вот объясни мне, зачем в функции параметр, который нельзя использовать?


--- Цитата: Mr2 от 25 Май 2011, 12:27:03 ---Я только С++ знаю. :blush:
В Delphi даже не вникал. Меня всё устраивает в C++, ну вот только двумерный динамический массив както смутил. ;)

--- Конец цитаты ---
А что там сложного в моих примерах? И двумерных дин. массивов там нету.
Если про вторую функцию sum, то вызовы:
sum( dyn_mas ) - суммирование всех элементов динамического массива, с индекса 0 до его конца
sum( stat_mas ) - суммирование всех элементов статического массива, например, с 1-го по 5-й, если он был объявлен как array[1..5]
sum( [ 2, 3, 4, 5 ] ) - суммирование фактически переданных в вызов чисел: 2 + 3 + 4 + 5.

И всё это одной простенькой функцией.

Или для первой функции sum:
sum( a ) - сложить первые два числа в массива a
sum( a[ 5 ] ) - сложить два числа, начиная с a[ 5 ], то есть a[ 5 ] + a[ 6 ]


И никаких закорючек.


А вот нашёл интересные посты ))))))
http://www.emu-land.net/forum/index.php/topic,49888.msg694737.html#msg694737
http://www.emu-land.net/forum/index.php/topic,49888.msg694732.html#msg694732
http://www.emu-land.net/forum/index.php/topic,49888.msg694515.html#msg694515
http://www.emu-land.net/forum/index.php/topic,49888.msg705059.html#msg705059
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии