Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 59, средняя оценка - 4.92
gore-lykovoe
32 / 32 / 1
Регистрация: 04.04.2010
Сообщений: 414
#1

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

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

Здравствуйте!
После школьной программы знаком с основами Паскаля, Делфи. Скоро поступлю в ВУЗ. Скорей всего буду изучать там С++. Решил немного подготовиться.
Скачал книгу Либерти (21 день).
Сейчас остановился на девятом дне. "Прошел" указатели и ссылки. Возникают большие трудности при использовании указателей и ссылок в классах. Утечки, нулевые объекты, мины замедленного действия, одним словом остались для меня непонятными.
Во-первых мне интересно - я виноват? Или это тяжелые темы для всех? Сколько вы потратили дней, чтобы полностью разобраться в этих темах? Вся сложность в них в том, что надо понимать, как записывается информация, где хранится, когда будет запускаться конструктор, copy конструктор, деструктор. Как надо использовать функции чтобы не запускать copy конструктор.
Во-вторых я хочу спросить, а надо ли мне новичку, знакомым с С++ 7 дней, разбираться в таких, как мне кажется профессиональных вещах? Может можноо обратиться к ним позже? Или дальше без этих тем не уедешь?
Тоесть основной вопрос: если остались непонятки в этих темах, можно изучать дальше, а потом вернуться к ним? Или лучше сейчас все понять?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2011, 17:04     Посоветуйте новичку в С++
Посмотрите здесь:

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

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

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

C++ новичку - C++
Доброго времени суток! У меня такой вопрос. Раньше никогда не программировал, а сейчас стало очень интересно. Могу ли я как полный ноль в...

подскажите новичку - C++
основы и синтаксис с++ знаю хотелось бы изучить QT но незнаю как подойти к решению вопроса подскажите книги какие-то голова кругом

Помощь новичку - C++
Пожалуйста помогите , я хочу изучить С++, подскажите с чего начать, с какой книги , какой прогой работать ?

Подскажите новичку - C++
Добрый день хотел узнать где достать пароль от программы созданной на с++ могу скинуть где качал прогу.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
05.08.2011, 22:14     Посоветуйте новичку в С++
  #91

Не по теме:

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
05.08.2011, 22:15     Посоветуйте новичку в С++ #92
Цитата Сообщение от asics Посмотреть сообщение
Разве кто-то утверждал иное ?
Зло порождает только зло, о чем и речь, так что не в goto дело и не в исключениях, просто каждый инструмент надо применять по назначению, а не в качестве костылей.
То есть топором надо дрова рубить, а не гвозди заколачивать или бриться. Это конечно тоже можно, но страшно опасно.
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
05.08.2011, 22:18     Посоветуйте новичку в С++ #93
Цитата Сообщение от fasked Посмотреть сообщение
просто каждый инструмент надо применять по назначению.
Ок. Какой для этого случая инструмент вменяемый ? goto, исключения, флаги(bool) отпадают.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
05.08.2011, 22:19     Посоветуйте новичку в С++ #94
asics, Не использовать таких циклов) Очевидно же)
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
05.08.2011, 22:21     Посоветуйте новичку в С++ #95
ForEveR, Жизнь не предсказуема, так все же...
Цитата Сообщение от asics Посмотреть сообщение
Какой для этого случая инструмент вменяемый ?
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
05.08.2011, 22:22     Посоветуйте новичку в С++ #96
asics, Большой цикл всегда имеется возможность разбить на функции. Конечно, мы плодим лишние сущности, но этот способ более менее вменяемый.
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
05.08.2011, 22:24     Посоветуйте новичку в С++ #97
ForEveR, Та ладно, нет ответа - значит нет, я же только спросил...
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,737
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
  // не нашли
пользоваться не рекомендуется
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 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 {
      // не нашли
   }
}
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,737
05.08.2011, 22:42     Посоветуйте новичку в С++ #100
Цитата Сообщение от fasked Посмотреть сообщение
ValeryS, нарушается принцип DRY (Don't Repeat Yourself). Условия цикла дублируются.
Не спорю
я же сказал
Цитата Сообщение от ValeryS Посмотреть сообщение
пользоваться не рекомендуется
просто мысли вслух
voral
428 / 408 / 57
Регистрация: 16.03.2008
Сообщений: 2,023
05.08.2011, 22:52     Посоветуйте новичку в С++ #101
Цитата Сообщение от diagon Посмотреть сообщение
Т.е. то, что вы изменили переменную объекта label1 - это не ООП? Сами себе противоречите.
Не не. Речь то не об этом. Ведь можно просто знать, чтоб изменить текст надо сделать "->" Но при этом не понимать, что это значит... Я в свое время на делфу долго плевался переходя с паскаля. Именно потому, что мне первые программисты именно такие попались показавшие делфи.

Согласитесь использовать и понимать это большая разница.
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.08.2011, 09:41     Посоветуйте новичку в С++ #102
Но я все-таки не понимаю, зачем все усложнять. Генерация исключения заставит читающего код запнуться и разбираться, с какой целью его сгенерировали. Ну и это явно менее эффективно, чем goto(там, если я не ошибаюсь, одна строчка на asm).
Если использовать несколько goto, тогда да, код становится крайне сложно отладить. Но одна маленькая goto'шка в некоторых случаях только улучшит читаемость и быстродействие.
Можно, конечно, использовать функции - но зачем все усложнять?
LosAngeles
Заблокирован
06.08.2011, 10:42     Посоветуйте новичку в С++ #103
с goto в С++ надо быть предельно осторожным. При выходе из областей видимости вызываются деструкторы для автоматических объектов. При выходе из циклов с помощью goto никакие деструкторы не вызываются, что естественно приводит к печальным последствиям. А с throw в этом плане всё в порядке
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
06.08.2011, 10:50     Посоветуйте новичку в С++ #104
Цитата Сообщение от diagon Посмотреть сообщение
Можно, конечно, использовать функции - но зачем все усложнять?
В примере, который я привел, использование функций все упрощает

Цитата Сообщение от LosAngeles Посмотреть сообщение
с goto в С++ надо быть предельно осторожным. При выходе из областей видимости вызываются деструкторы для автоматических объектов. При выходе из циклов с помощью goto никакие деструкторы не вызываются, что естественно приводит к печальным последствиям. А с throw в этом плане всё в порядке
Это верно, но все же не оправдывает использования исключений для выхода из циклов.
Простое правило: goto в пределах одной области видимости, не больше!

Все равно самый лучшим вариантом будут изменения на более высоком уровне, чем на уровне команд или инструкций. Серьезно, грамотный рефакторинг - это панацея
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2011, 11:04     Посоветуйте новичку в С++
Еще ссылки по теме:

Советы новичку - C++
Ребята, добрый день! Помогите в написании кода, не могу все собрать вместе. Нужно чтобы пользователь указал с клавиатуры длину массива...

Поясните новичку - C++
Компилятор ругается на программу: #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;math&gt; using namespace std; int main() ...

Подскажите новичку - C++
Подскажите новичку какой интегрированной средой разработки пользоваться и как ?

Литература Новичку - C++
Подойдет ли данная книга новичку?

Подскажите новичку. - C++
Здравствуйте. Есть такой пример составил под него программу на С++ #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
06.08.2011, 11:04     Посоветуйте новичку в С++ #105
Цитата Сообщение от fasked Посмотреть сообщение
нуууу....
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <vector>
#include <iostream>
void some_c_function(const int *ptr, size_t nsize) {
 while (nsize--) {
 printf("%d, ", *ptr++);
 }
}
int main() {
 std::vector<int> vec = { 1, 2, 3, 4, 5 };
 some_c_function(&vec[0], vec.size());
return 0;
}
Ну, строго говоря, данный код не соответствует Стандарту, так как оный отнюдь не требует, чтобы вектор был реализован непременно в виде массива.
Yandex
Объявления
06.08.2011, 11:04     Посоветуйте новичку в С++
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru