Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2010, 16:55   #31
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

А что вы собственно такое пишите ? )
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 29.05.2010, 16:58   #32
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Да пока просто функции. Готовлюсь) Но потом, например в играх, или серверных приложениях, во время работы с циклами, будет же частое обращение к тем или иным функциям, переменным и т.п...
Артэс вне форума Ответить с цитированием
Старый 29.05.2010, 17:12   #33
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Вот как только вам понадобится скорость, вот тогда и оптимизируйте, всё равно переписывать придется =)
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 29.05.2010, 17:21   #34
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Нужно же заранее узнать, стоит ли так сильно программу на функции разбирать, или нет. А вот на счет переписывания, не уверен.
Артэс вне форума Ответить с цитированием
Старый 29.05.2010, 17:35   #35
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Разбивайте как вам удобно, главное чтобы читалось.
А переписывать придется
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 29.05.2010, 17:39   #36
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Артэс Посмотреть сообщение
Нужно же заранее узнать, стоит ли так сильно программу на функции разбирать, или нет. А вот на счет переписывания, не уверен.
Безусловно стоит. Функция должна выполнять только одну задачу, а не много. Не начинайте оптимизацию с этого, тем более даже до того, как вы начали проект, это глупо, вы не получите ни грана производительности, а лишь усложните себе жизнь. Тяжело писать всё в одной куче, легко допустить в ней ошибки, а во многих случаях это попросту неэффективно и может понизить производительность. Короче, не заморачивайтесь подобной оптимизацией, лучше продумывайте получше алгоритмы
netrino вне форума Ответить с цитированием
Старый 29.05.2010, 17:59   #37
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Цитата:
Сообщение от ozo Посмотреть сообщение
А переписывать придется
По крайней мере, если заранее позаботиться о важных вещах, многих исправлений можно избежать.

Цитата:
Сообщение от netrino Посмотреть сообщение
Безусловно стоит. Функция должна выполнять только одну задачу, а не много. Не начинайте оптимизацию с этого, тем более даже до того, как вы начали проект, это глупо, вы не получите ни грана производительности, а лишь усложните себе жизнь. Тяжело писать всё в одной куче, легко допустить в ней ошибки, а во многих случаях это попросту неэффективно и может понизить производительность. Короче, не заморачивайтесь подобной оптимизацией, лучше продумывайте получше алгоритмы
Просто хотел заранее прояснить. Хотелось и удобства, и мысль "да, так работает быстрее" тоже не помешает. Что ж, спасибо!

На счет указателей, скажите, правильно ли я их использую?
Через функцию test присвоить переменной x значение 10

Код:
int test(int *a)
{
*a=10;
}

int main()
{
int x=1;
test(&x);
}

Последний раз редактировалось Артэс; 29.05.2010 в 18:04.
Артэс вне форума Ответить с цитированием
Старый 29.05.2010, 18:05   #38
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,087
По умолчанию

Ох уж эти оптимизаторы всего и вся... Мы не знаем разницы между стековой памятью и кучей. Понятия не имеем как происходит вызов функций и передача параметров. Пишем C-style преобразования типов в коде, т.к. непонятна разница между static_cast, const_cast,.. или вообще про них не слышали. Не знаем про графы, деревья, списки,.. и алгоритмы, основанные на этих структурах данных. Зато хотим создавать супер быстрый код.
Не бегите вперед паровоза. Напишите хоть что-нибудь, хоть как-нибудь. В программировании важен опыт. Без опыта нельзя написать ничего хорошего. Первый "блин" в любом случае выйдет комом и его захочется переписать. Да и второй "блин" захочется переписать, т.к. всплывут новые проблемы. Разве что в элементарных задачах и каких-то частных случаях есть 100% оптимальные решения. Как правило приходится искать компромисс между скоростью написания кода, его читабельностью, удобством использования и скоростью его исполнения, объемом,... Ну а без опыта для всех возможных решений задачи взвесить все за и против правильно не получится. Что-то по неопытности будет не учтено и проблема всплывет в процессе реализации. Ну а когда уже будет конкретная задача и появится проблема с её решением, то милости просим с подробным описанием проблемы.
Цитата:
Сообщение от Артэс Посмотреть сообщение
На счет указателей, скажите, правильно ли я их использую?
Через функцию test присвоить переменной x значение 10

Код:
int test(int *a)
{
*a=10;
}

int main()
{
int x=1;
test(&x);
}
Если пишется на С++, то там для этого есть ссылки:
Код:
int test(int &a)
{
a=10;
}

int main()
{
int x=1;
test(x);
}
В случае с указателями, не забывайте, что в test можно будет передать NULL и тогда код *a=10 вылетит с ошибкой доступа к нулевому адресу

Последний раз редактировалось pu4koff; 29.05.2010 в 18:07.
pu4koff вне форума Ответить с цитированием
Старый 29.05.2010, 18:12   #39
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Ну да, надо проверки делать. А зачем мне передавать NULL, зная, что это черевато ошибкой?)

Так а именно на Си, такой алгоритм не годится?

Последний раз редактировалось Артэс; 29.05.2010 в 18:25.
Артэс вне форума Ответить с цитированием
Старый 29.05.2010, 19:21   #40
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,087
По умолчанию

Цитата:
Сообщение от Артэс Посмотреть сообщение
Ну да, надо проверки делать. А зачем мне передавать NULL, зная, что это черевато ошибкой?)
1. Функцией могут пользоваться другие люди, которые об этом не знают;
2. Передаваемый указатель может являться результатом работы функции, которая вызывается из другой функции, которая свои параметры получает из файла, который заполняется подключенной к компу железкой,...;
3. Наличие/отсутствие проверки аргументов зависит от выбранного стиля кодирования и накладывает ограничения в стиле программирования кода, использующего эту функцию.
Цитата:
Сообщение от Артэс Посмотреть сообщение
Так а именно на Си, такой алгоритм не годится?
1. Это не алгоритм
2. Синтаксически всё правильно, а вот смысла в такой функции никакого
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на switch ProgramerBeatz Общие вопросы C/C++ 12 25.01.2011 00:59
switch Dimarik Общие вопросы C/C++ 4 11.04.2010 15:56
switch и string??? i-cpp Общие вопросы C/C++ 7 12.02.2010 14:58
SWITCH 8 портовый SKS Компьютерное железо 3 29.01.2009 03:39
Switch Division Общие вопросы C/C++ 3 11.01.2009 23:52