Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.98/51: Рейтинг темы: голосов - 51, средняя оценка - 4.98
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
1

Посоветуйте новичку в С++

31.07.2011, 17:04. Показов 10341. Ответов 126
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
После школьной программы знаком с основами Паскаля, Делфи. Скоро поступлю в ВУЗ. Скорей всего буду изучать там С++. Решил немного подготовиться.
Скачал книгу Либерти (21 день).
Сейчас остановился на девятом дне. "Прошел" указатели и ссылки. Возникают большие трудности при использовании указателей и ссылок в классах. Утечки, нулевые объекты, мины замедленного действия, одним словом остались для меня непонятными.
Во-первых мне интересно - я виноват? Или это тяжелые темы для всех? Сколько вы потратили дней, чтобы полностью разобраться в этих темах? Вся сложность в них в том, что надо понимать, как записывается информация, где хранится, когда будет запускаться конструктор, copy конструктор, деструктор. Как надо использовать функции чтобы не запускать copy конструктор.
Во-вторых я хочу спросить, а надо ли мне новичку, знакомым с С++ 7 дней, разбираться в таких, как мне кажется профессиональных вещах? Может можноо обратиться к ним позже? Или дальше без этих тем не уедешь?
Тоесть основной вопрос: если остались непонятки в этих темах, можно изучать дальше, а потом вернуться к ним? Или лучше сейчас все понять?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.07.2011, 17:04
Ответы с готовыми решениями:

посоветуйте новичку в С++
Здравствуйте! Я изучаю С++. С начала я скачала книгу Либерти, но было очень трудно. Сейчас я...

посоветуйте литературу, новичку
:help: знаю, конечно, что в разделе "важно" (но всё-таки один раз живём :beach:) эта тема уже...

Посоветуйте книгу/-и новичку
Доброе время суток человечество! Посоветуйте пожалуйста книгу по с++ новичку, желательно поновее....

Посоветуйте новичку порядок действий
Посоветуйте новичку, в двух словах, порядок действий и название команд. Требуется, на Visual C,...

126
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
05.08.2011, 21:22 81
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от fasked Посмотреть сообщение
asics, исключения для выхода из циклов - это еще хуже, чем goto
Это шутка ?

Добавлено через 5 минут
Да и это просто пример, как выйти из глубоко вложеного цикла без булевых флагов, а именно средствами С++.
0
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
05.08.2011, 21:25 82
Интересно, вот gore-lykovoe, открывший эту тему, читает все сообщения и о чем же он думает Какое впечатление о С++ будет
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
05.08.2011, 21:27 83
Вот с хабра крик души:
Привет Хабр,
Меня вводит в ступор С++. Вот просто, зависаю над монитором, смотрю в окно, попиваю чай… И начинаю жалеть за бесценно проведенные годы за изучением стандарта С++, попытками написать свой фронт-энд компилер. Эти мудреные книжки С++ In Depth. Как же я негодовал, когда не понимал кода из книги Александреску. Как записывал все постулаты Страуструпа и иже с ними. Зачем? Вот спрашиваю себя, зачем я теперь все это знаю. Более, я хочу сказать, что этот язык нещаден для гуру, не с медицинской, не с экономической точки зрения! Он не оправдывает усилий, вложенных в его изучение — раз. На практике, он экономически не выгоден — два. И нервные клетки подтвердят, что сопровождать чужой плюснутый код — бывает опасно для здоровья -три.
1
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
05.08.2011, 21:29 84
Цитата Сообщение от Olga_ Посмотреть сообщение
Сейчас это считается признаком плохого тона, извини, diagon, при всем уважении
а почему? я знаю что есть std::function, но все же интерено

Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Вот с хабра крик души:
не согласен со многим в этой статье, автору надо на С#/Java быдлокодить
1
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
05.08.2011, 21:44 85
Цитата Сообщение от Maxwe11 Посмотреть сообщение
а почему? я знаю что есть std::function, но все же интерено
Не моя это установка, я сама иногда указатели на функции использую (честно говоря), код получается интереснее, но вот так, что я могу сказать...
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
05.08.2011, 21:57 86
Цитата Сообщение от asics Посмотреть сообщение
Это шутка ?
Я абсолютно серьезно. Исключения, как ни странно, предназначены для исключительных ситуаций. Выход из цикла ситуация вполне штатная. Ничего в этом катастрофического нет. А любой программист при виде брошенного исключения скорее всего подумает об ошибке.
Цитата Сообщение от asics Посмотреть сообщение
Да и это просто пример, как выйти из глубоко вложеного цикла без булевых флагов, а именно средствами С++.
а goto это тоже средства C++.
Цитата Сообщение от Maxwe11 Посмотреть сообщение
не согласен со многим в этой статье, автору надо на С#/Java быдлокодить
Поддерживаю. Да и вообще многое, о чем написано в этой статье, мало относится к C++. Скорее к ООП в целом.
1
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
05.08.2011, 21:59 87
Цитата Сообщение от fasked Посмотреть сообщение
goto это тоже средства C++.
Я имел ввиду вменяемыми средствами, очевидно же.
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
05.08.2011, 22:00 88
Цитата Сообщение от Olga_ Посмотреть сообщение
Не знала, что на С#/Java быдлокодят, спасибо, бросаю Java
сейчас в эти языки лезут все кто неосвоил указатели в С++, эти люди тупо используют фреймворк при чем не самым лучшим образом из-за не знания внутренней "кухни"
1
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
05.08.2011, 22:03 89
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от asics Посмотреть сообщение
Я имел ввиду вменяемыми средствами.
Так вот я и говорю о том, что использовать исключения для таких целей это невменяемо.
Можно еще добавить, что Линус Торвальдс (хоть он и сишник) пишет: "... if you need more than 3 levels of indentation, you're screwed anyway, and should fix your program." То есть, такое количество циклов говорит разве что о плохом дизайне проекта. Если же это какой-то супер-мега-алгоритм, то ... тут надо подумать, но точно не исключения

Не по теме:

Цитата Сообщение от Maxwe11 Посмотреть сообщение
сейчас в эти языки лезут все кто неосвоил указатели в С++
F***g pointers, Java is better because it has no pointers! :D

3
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
05.08.2011, 22:10 90
Цитата Сообщение от fasked Посмотреть сообщение
Исключения, как ни странно, предназначены для исключительных ситуаций. Выход из цикла ситуация вполне штатная. Ничего в этом катастрофического нет. А любой программист при виде брошенного исключения скорее всего подумает об ошибке.
Хотите использовать goto - используйте, кто-то разве запрещает ?

Добавлено через 1 минуту
Цитата Сообщение от fasked Посмотреть сообщение
Так вот я и говорю о том, что использовать исключения для таких целей это невменяемо.
Вы это скажите
Цитата Сообщение от niXman Посмотреть сообщение
то ли у Саттера, то ли у Александреску.
, я-то тут причем ?

Добавлено через 2 минуты
Цитата Сообщение от fasked Посмотреть сообщение
тут надо подумать, но точно не исключения
Ну думайте...я себя от этого избавлю, в даном вопросе.

Добавлено через 1 минуту
Цитата Сообщение от fasked Посмотреть сообщение
То есть, такое количество циклов говорит разве что о плохом дизайне проекта.
Разве кто-то утверждал иное ?
0
ForEveR
05.08.2011, 22:14
  #91

Не по теме:

Эхх. А в питоне исключения не только для того, чтобы сообщить об ошибке. На правах рекламы:D

0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
05.08.2011, 22:15 92
Цитата Сообщение от asics Посмотреть сообщение
Разве кто-то утверждал иное ?
Зло порождает только зло, о чем и речь, так что не в goto дело и не в исключениях, просто каждый инструмент надо применять по назначению, а не в качестве костылей.
То есть топором надо дрова рубить, а не гвозди заколачивать или бриться. Это конечно тоже можно, но страшно опасно.
1
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
05.08.2011, 22:18 93
Цитата Сообщение от fasked Посмотреть сообщение
просто каждый инструмент надо применять по назначению.
Ок. Какой для этого случая инструмент вменяемый ? goto, исключения, флаги(bool) отпадают.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
05.08.2011, 22:19 94
asics, Не использовать таких циклов) Очевидно же)
2
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
05.08.2011, 22:21 95
ForEveR, Жизнь не предсказуема, так все же...
Цитата Сообщение от asics Посмотреть сообщение
Какой для этого случая инструмент вменяемый ?
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
05.08.2011, 22:22 96
asics, Большой цикл всегда имеется возможность разбить на функции. Конечно, мы плодим лишние сущности, но этот способ более менее вменяемый.
1
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
05.08.2011, 22:24 97
ForEveR, Та ладно, нет ответа - значит нет, я же только спросил...
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
05.08.2011, 22:26 98
Цитата Сообщение от asics Посмотреть сообщение
Ок. Какой для этого случая инструмент вменяемый ? goto, исключения, флаги(bool) отпадают.
не совсем вменяемый (может даже очень не вменяемый) но ничего перечисленного нет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int i,j,k;
for(i=0;i<10;i++)
{
  for(j=0;j<10;j++)
   {
     for (k=0;k<10;k++)
      {
         if(lalala[i][j][k]==75)// чего-то ищем
            break; 
       }
      if(k!=10)
         break;
     }
   if(j!=10)
      break;
}
if(i!=10)
  // нашли
 else
  // не нашли
пользоваться не рекомендуется
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
05.08.2011, 22:33 99
ValeryS, нарушается принцип DRY (Don't Repeat Yourself). Условия цикла дублируются. Выход из ситуации ну очень прост - добавить дополнительную сущность:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int* search(...) {
   for (i = 0; i < 10; ++i) {
      for (j = 0; j < 10; ++j) {
         for (k = 0; k < 10; ++k) {
            if (arr[i][j][k] == 75)
               return &arr[i][j][k];
         }
      }
   }
   
   return NULL;
}
 
int foo() {
   int *ptr = NULL;
   if (ptr = search(...)) != NULL) {
      // нашли
   }
   else {
      // не нашли
   }
}
1
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
05.08.2011, 22:42 100
Цитата Сообщение от fasked Посмотреть сообщение
ValeryS, нарушается принцип DRY (Don't Repeat Yourself). Условия цикла дублируются.
Не спорю
я же сказал
Цитата Сообщение от ValeryS Посмотреть сообщение
пользоваться не рекомендуется
просто мысли вслух
0
05.08.2011, 22:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.08.2011, 22:42
Помогаю со студенческими работами здесь

Посоветуйте новичку книжку или сайт, где описывается создание графического интерфейса в VC
Добрый вечер, подскажите пожалуйста какую нибудь книжку или сайт где описывается создание...

Посоветуйте новичку
Всем привет, посоветуй пожалуйста хороший учебник по php. Я почитал эту тему...

Посоветуйте новичку
Хочу собрать комп до 100к.Вот то, что сам насобирал: 1)процессор - Intel core i7-6700K Box...

Посоветуйте новичку!!
Здравствуйте, пару минут проведя на форуме меня заинтересовал раздел вебпрограммирование (Решил как...


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru