Большой Воронежский Форум
Страница 2 из 5
< 12 345 >
» Программирование>У новичка возникли вопросы!!!
Part!zan 22:33 07.04.2008

Сообщение от Ivan XXX:
аскетичнее некуда ))

очень даже есть куда... блокнот, например. и компилить батником. тру программеры так и должны кодить, ага...

Фигню вы тут все советуете... Делфи-билдеры какие-то... Если программерство планируется сделать основным занятием, то нефиг размениваться на мелочи. Все сложности в сях надуманные и проистекают как раз оттого, что человеки черезчур расслаблены делфями/вб/билдерами.

lermontov, зачем ты начинаешь со сложного? Изучи сначала базовые вещи, а потом уже загоняйся с классами-стримами... [Ответ]
Ivan XXX 22:53 07.04.2008

Сообщение от lermontov:
#include <iostream>
#include <string>
#include <fstream>
#include <vector>

using namespace std;

int main()
{
ifstream fs("cl.txt");
istream_iterator<string> begin(fs), eof;
vector<string> v(begin, eof);

//// Теперь можно обращаться к элементам по индексу
cout<<v[0]<<endl;
cout<<v[1]<<endl;
}

и оно где-то откомпилилось? [Ответ]
lermontov 07:24 08.04.2008
да откомпилировалось в кодблоксе ,только ещё добавил .h в конце всех библиотек! [Ответ]
lermontov 07:32 08.04.2008

Сообщение от Part!zan:
lermontov, зачем ты начинаешь со сложного? Изучи сначала базовые вещи, а потом уже загоняйся с классами-стримами...

На данном этапе моего обучения работа с классами и строками как раз должна перейти в базовую.Ну а самые базовые вещия я уже вроде постиг -потоки,функции,циклы,массивы.
С кажу от себя насчет строк в языке С++: ну както уж слишком плохо они тут реалезованны,мало операций с ними можно производить,но это только мое мнение. [Ответ]
Akad 09:06 08.04.2008
lermontov, Кстати часто mfc приходится в небольших программах цеплять исключительно из-за CString. Имхо единственная нормальная возможность работы со строками в с++. Хотя стандартными strcpy, sprintf и т.д. и т.п. можно сделать все. Только код становится не читабельным, а программирование начинает походить на удаление гланд через анус. [Ответ]
Ivan XXX 17:11 08.04.2008

Сообщение от lermontov:
да откомпилировалось в кодблоксе

ч0рт. а у меня без ретурна на компилятся функции. кроме воид, естественно [Ответ]
Part!zan 19:57 08.04.2008

Сообщение от lermontov:
базовые вещия я уже вроде постиг

Если бы постиг, то вопросов бы таких не задавал. Освой для начала просто Си, а потом уже плюсуй.

Сообщение от lermontov:
мало операций с ними можно производить

Мегалол. А какие операции ты бы хотел делать, но не нашел таковых в плюсах? [Ответ]
The_God 23:04 08.04.2008

Сообщение от Part!zan:
Освой для начала просто Си, а потом уже плюсуй.

а что общего между этими языками кроме синтаксиса ?
на мой взгляд с не нужен если хочеш програмить на с++
если ты его знаеш то это такойже плюс как и знание делфей или паскаля
с++ он сам по себе. [Ответ]
xxx-men 00:45 09.04.2008
VS рулед, остальное в топку
были мыли, что "в С++ надо понимать архитектуру железа" - не правда, массив сортирует на всех компах так же
в бейсике синтаксис проще? так это ваще кому как, помоему самый дибильный синтаксис в 1с.

начинать надо с С++, т.к. ничо_там_сложного_нет и большая_пачка_книжек
[Ответ]
Part!zan 20:23 09.04.2008

Сообщение от The_God:
а что общего между этими языками кроме синтаксиса

Ответ заключен в вопросе. Вообще, логично начинать от простого к сложному. Си более прост, чем плюсы, но он дает освоиться и понять, что к чему. После него плюсы будет изучать много проще и не будет глупых вопросов, подобных заданному топикстартером. [Ответ]
xxx-men 09:10 10.04.2008

Сообщение от Part!zan:
Си более прост, чем плюсы,

и чем же??? [Ответ]
Pengvin 10:56 10.04.2008

Сообщение от xxx-men:
и чем же???

отсутствием ООП [Ответ]
xxx-men 12:55 10.04.2008

Сообщение от Pengvin:
отсутствием ООП

ога, учусь я массив сортировать и мне перед этим обязательно надо знать: что такое ООП, шаблоны и прочая хрень....? [Ответ]
The_God 13:16 10.04.2008
массив можно и на бейсике отсортировать
а с проще чем с++ т.к. в с++ есть то чего нет в с, например исключений и хрен их на сях сэмулируеш, вот

о.. а еще есть шаблоны.

если учить начнать с а потом переходить на с++. то перейдут все привычки программирования которые катили в сях но являются плохим стилем программирования в с++
например
использование дефайнов,
приведение типов - (int)Value, а в с++ принято int( Value ).
использование malloс, хотя нужно юзать new.
ну и по мелочи еще много всяких фишек сишного кода приползет когда чел станет на с++ програмить.

разные языки, разные правила, общие только зарезервированые слова и всё.

for ( int n=0; n<10; n++)
{
...
}

if ( n == 3 )
{
...
}

в сях такая проверка прокатит, а в с++ уже нет, ибо языки блин разные.
[Ответ]
Akad 14:40 10.04.2008
The_God, Это с каких пор в с++ использование дефайнов плохой стиль? [Ответ]
The_God 14:43 10.04.2008
с появлением шаблонов

нельзя зайти отладчиком в дефайн.. это помоему их погубило [Ответ]
Akad 14:56 10.04.2008
эээ....
#define my_debug

#ifdef my_debug
...
#endif
Это первый пример.
#if defined(WIN32_PLATFORM_PSPC) || defined(WIN32_PLATFORM_WFSP)
#define D_ASSERT( a ) IFTRAP(( a ) ? 0 : 0);
#else
#define D_ASSERT( a ) IFTRAP(( a ) ? 0 : ShowDebugMessage(#a, __FILE__,__LINE__));
#endif
Это второй пример.
Ну и вообще стандартные mfc фишки типа:
BEGIN_MESSAGE_MAP/END_MESSAGE_MAP,ON_WM_PAINT, ON_CBN_SELCHANGE и т.п. Очень удобны. Чем выписывать каждый раз одно и то-же.
#define удобны. Надо их только правильно использовать. Не перебарщивать с алгоритмикой. [Ответ]
The_God 15:18 10.04.2008
первый пример сомнительный
яб попробывал его заменить на использование
static bool const my_debug = true; - это описать в какойнить глобальной ашке

if ( my_debug )
{
...
}
хотя есть конечно случа когда так не получится, но когда так можно сделать, то дефайн не нужен.

второй пример:
для ассертов согласен, это наверное единственное место дефайн удобен.

а про mfc не знаю, не юзал. ну даже если ктото использовал кривой ( но, как не странно, рабочий ) код, то повторять их промахи яб не стал. [Ответ]
Pengvin 15:52 10.04.2008
насчет дефайнов и чувства меры приведу мой любимый веселый пример

#define IRQ_HANDLER(func) void func (void); asm(#func ": pusha \n call _" #func " \n movb $0x20, %al \n outb %al, $0x20 \n popa \n iret \n"); void _ ## func(void)

вкратце этот дефайн формирует функцию с нужной для обработчика прерываний прологом и эпилогом. Что-то вроде шаблона на С++ бугага. Кстати это работало . Я проверял когда-то в gcc. [Ответ]
Akad 15:54 10.04.2008
if ( my_debug ) - это команды процессора причем с обращением куда-то далеко в память. Тебе, как игроделу, полезно иногда об этом задумываться, тогра как #ifdef абсолютно "бесплатен".
Макросы из моих последних проектов:
#define MessageBoxAndLogError(x) {Log.Add("Error");Log.Add(x);Log.Add(#x);MessageBo x(NULL,x,"Error",MB_OK);};
#define JIFErr(x,x2) if (FAILED(hr=(x))) {Log.Add("Error"); Log.Add(#x,x2); MessageBox(NULL,x2,"Error",MB_OK);return hr;};
#define JIF(x) if (FAILED(hr=(x))) return hr;
Не представляю во сколько раз увеличится код и гемор по изменению логики обработки ошибок без этих макросов.
Про макросы, которые заполняют всякие там UID я вообще молчу. Без них код ВООБЩЕ не читабелен. [Ответ]
The_God 16:01 10.04.2008
static bool const my_debug = true, это число, студия еще напишит в релизе варнин что кусок кода никогда выполнен не будет. поэтому тут тоже все бесплатно.

можно заменить даж так
enum
{
my_debug = 1
};

нет здесь и там обращения к памяти.


Сообщение от Akad:
Не представляю во сколько раз увеличится код и гемор по изменению логики обработки ошибок без этих макросов.
Про макросы, которые заполняют всякие там UID я вообще молчу. Без них код ВООБЩЕ не читабелен.

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

у меня в коде они тоже есть
assert например, и наверное всё. [Ответ]
Part!zan 20:37 10.04.2008

Сообщение от The_God:
то чего нет в с, например исключений

Да что ты говоришь...

Сообщение от :
The try-except Statement

Microsoft Specific

The try-except statement is a Microsoft extension to the C language that enables applications to gain control of a program when events that normally terminate execution occur. Such events are called exceptions, and the mechanism that deals with exceptions is called structured exception handling.

Совсем зазнался со своими плюсами... )

Сообщение от xxx-men:
учусь я массив сортировать

Некоторые товарищи даже на таком начальном уровне начинают загоняться с шаблонами-потоками. А потом не могут нихрена понять, как же работает заботливо слизанный пример. [Ответ]
The_God 20:44 10.04.2008
сам же написал что это

Сообщение от Part!zan:
Microsoft Specific

а не стандарт языка

если я напишу свой компилятор для С то я могу там много Wawan Specific фишек добавить, но это уже к стандартным сям отношения иметь не будет. [Ответ]
Part!zan 21:52 10.04.2008
The_God, по-моему, мы уже согласились, что MSVS это лучшее, что сейчас есть. ) Поэтому можно смело не обращать внимание на такие ремарки. [Ответ]
Pengvin 21:59 10.04.2008
скоро добавят в стандарт

Сообщение от :
During the 2007 Kona meeting, WG 14 discussed the possibility of adding both the gcc based
cleanup attribute, and the MSVC based try {} finally {} construct.

[Ответ]
xxx-men 08:00 11.04.2008

Сообщение от The_God:
в сях такая проверка прокатит, а в с++ уже нет, ибо языки блин разные.

не знал что в Си переменная столько живет

Сообщение от The_God:
static bool const my_debug = true; - это описать в какойнить глобальной ашке

if ( my_debug )
{
...
}

поясни момент, my_debug -число, это понятно. тогда получаеца:
if(true)//это бесплатно?
{
printf("preveed world");
}; [Ответ]
The_God 12:51 11.04.2008

Сообщение от xxx-men:
if(true)//это бесплатно?

компилятор не тупой, он может оптимизить и гораздо более трёхэтажные вещи.

в таких и во многих других случаях в настройках компиляции ставиш сохранения asm-листинга с исходным кодом на с++ при компиляции, а потом смотриш в блокноте тот асмовый код который создала студия, и видиш что там нет никаких проверок, там нет этого IF вааабще.

это все справедливо для release компиляции, в debug может быть всё.

static bool const t=true;


; 75 : if ( t )
; 76 : {
; 77 : Log( "test" );

push OFFSET ??_C@_04CEJDCDCH@test?$AA@
call _Log
add esp, 4

; 78 : } [Ответ]
manifest 00:10 16.04.2008

Сообщение от Ivan XXX:
и оно где-то откомпилилось?

компилируется любым компилятором, поддерживающим стандарт С++ [Ответ]
Ivan XXX 06:11 16.04.2008
manifest, фантастика [Ответ]
manifest 12:30 16.04.2008

Сообщение от Ivan XXX:
manifest, фантастика

Ivan XXX, факт [Ответ]
Страница 2 из 5
< 12 345 >
Вверх