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

Как эффективно изучать программирование? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Виртуальные деструкторы http://www.cyberforum.ru/cpp-beginners/thread927487.html
Можно ли вызвать деструктор базового класса вместо использования виртуальных деструкторов? class CBase { public: CBase(const char *str1) { mStr1 = new char; strcpy(mStr1, str1); }
C++ Как обмануть указатель? Я бы хотел сделать так, чтобы функция my_function могла менять значение value, а alien_function - нет. Вносить изменения в код alien_function и Alien_class я не могу, поелику они написаны не мной. My_class { Alien_class value; } Alien_class my_function(Alien_class x) { } http://www.cyberforum.ru/cpp-beginners/thread927474.html
Ошибка в программе, читающей файлы C++
Пишу программу, которая принимает произвольное количество файлов с записями на вход и в конечном счете выводит эти записи отсортированные в последний принятый файл. Естественно, у меня ничерта не работает и я отлаживаю программу кусками (так что позже, скорей всего, задам не один вопрос по ней же). Вот в этом куске я пытаюсь понять почему не удается нормально записать содержимое файла в...
Оператор присваивания C++
Добрый день! Помогите, пожалуйста, разобраться. Я не совсем понимаю работу перегруженного оператора присваивания в классе String, который содержит переменные-члены: указатель char *itsString и переменную unsigned short itsLen (длина строки): String& String::operator=(const String & rhs) { if (this == &rhs) return *this; delete itsString; itsLen=rhs.GetLen(); ...
C++ Написать функцию, определяющую пересекаются ли два отрезка http://www.cyberforum.ru/cpp-beginners/thread927457.html
На вход подаются координаты начал и концов двух отрезков. Нужно определить пересекаются ли они. Добавлено через 21 минуту Или хотя бы объяснить, как это написать
C++ Отладка консольного приложения в отладчике OllyDbg открыл оконный проект из Делфи, вся информация, код отображаются нормально. Таким же способом открыл обычную консольную программу, просто запустилась прога, а кода и никакой информации нету. Почему, что не так? подробнее

Показать сообщение отдельно
gru74ik
Модератор
 Аватар для gru74ik
3116 / 1342 / 167
Регистрация: 20.02.2013
Сообщений: 3,809
Записей в блоге: 17
18.08.2014, 22:26     Как эффективно изучать программирование?
Цитата Сообщение от guitarman Посмотреть сообщение
Прошёл 7 глав, а дальше уже очень сложно понимать информацию.
Есть такое дело. Поэтому иногда бывает полезно отвлечься, разгрузить мозги, просто поржать, например.

Либо вот ещё способ - посмотреть как ту же тему, на которых ты у Дейтелов "впадаешь в ступор" объясняют другие авторы (например, Липпман или Прата).

Можно попробовать обучение в игровом процессе.

Главное, не впадать в уныние.

Добавлено через 26 минут
Вот ещё кое-что (от создателя С++):
Кликните здесь для просмотра всего текста
Цитата Сообщение от Бьярне Страуструп
1.2. Как изучать C++

Изучая C++, нужно сконцентрироваться на концепциях и не потеряться в
технических деталях. Цель изучения — стать квалифицированным программистом,
который эффективно проектирует и реализует новые разработки, а также умело
поддерживает уже существующие. Для этого важнее понять методологию
проектирования и программирования, чем исчерпывающе изучить все детали языка —
последнее постепенно приходит вместе с опытом.
<...>
C++ поддерживает постепенный подход к обучению. Ваш собственный путь
изучения нового языка программирования зависит от того, что вы уже знаете,
и чему именно хотите научиться. В этом деле нет единого подхода для всех и
каждого. Я предполагаю, что вы изучаете C++, чтобы повысить эффективность в
проектировании программ и их реализации. То есть я полагаю, что вы не только хотите
изучить новый синтаксис, чтобы с ним писать новые программы старыми
методами, но в первую очередь стремитесь научиться новым, более продуктивным
способам построения программных систем. Это надо делать постепенно, так как
приобретение и закрепление новых навыков требует времени и практики. Подумайте,
сколько времени обычно занимает качественное овладение иностранным языком,
или обучение игре на музыкальном инструменте. Конечно, стать
квалифицированным программным архитектором и разработчиком можно быстрее, но не
настолько, как многим хотелось бы.
Отсюда следует, что вы будете использовать C++ (зачастую для построения
реальных систем) еще до того, как овладеете всеми его нюансами. Поддерживая
несколько парадигм программирования (глава 2), C++ обеспечивает возможность
продуктивной работы программистов разной квалификации. Каждый новый стиль
программирования добавляет новый штрих в ваш совокупный инструментарий, но
каждый стиль ценен и сам по себе, так как увеличивает эффективность вашей
работы как программиста. Язык C++ организован таким образом, что вы можете
изучать его концепции последовательно, постепенно наращивая свои возможности.
Это важно, так как ваши возможности будут расти практически пропорционально
затраченным на обучение усилиям.
<...>
Вопрос «Как писать хорошие программы на C++?» практически полностью
аналогичен вопросу « Как писать хорошую английскую прозу?». Здесь есть два совета:
«Знай то, что хочешь сказать» и «Практикуйся. Подражай успешным образцам».
Оба совета походят и для C++, и для английского языка, но обоим из них так
трудно следовать.



1.8. Советы

Ниже дан набор «правил», которые могут пригодиться при изучении C++. По
мере продвижения в этом процессе вы можете переработать их в нечто, более
пригодное для ваших задач и вашего индивидуального стиля программирования.
Перечисленные правила являются упрощенными и не отражают множества деталей. Не
воспринимайте их слишком буквально. Для написания хороших программ
требуются ум, вкус и терпение. Вряд ли эти правила помогут вам с самого начала.
Экспериментируйте!
1. В процессе программирования вы реализуете конкретное представлений
концепций решения некоторой проблемы. Постарайтесь, чтобы структура
программы отражала эти концепции как можно более непосредственно:
• [а] Если вы мыслите об «этом» как о некой общей сущности, сделайте
«это» классом.
• [Ь] Если вы мыслите об «этом» как о конкретном экземпляре сущности,
сделайте «это» объектом класса.
• [с] Если два класса имеют общий интерфейс, оформите его в виде
абстрактного класса.
• [d] Если реализации двух классов имеют что-то общее, вынесите это общее
в базовый класс.
• [е] Если класс является контейнером объектов, сделайте его шаблоном.
• [f] Если функция реализует алгоритм работы с контейнером, сделайте ее
функциональным шаблоном, реализующим алгоритм для работы с
семейством контейнеров.
• [g] Если классы, шаблоны и т.д. логически связаны, поместите их все
в единое пространство имен.
2. Определяя класс (если только это не математический класс вроде матриц или
комплексных чисел, или низкоуровневый тип вроде связного списка):
• [а] Не используйте глобальные данные (применяйте классовые поля
данных).
• [Ь] Не используйте глобальные функции.
• [с] Не делайте поля данных открытыми.
• [d] He используйте дружественные функции, разве что во избежание [а]
и [с].
• [е] Не используйте в классах «поля типа»; применяйте виртуальные
функции.
• [f] He используйте встраиваемые функции, разве что для значительной
оптимизации.
Более конкретные или подробные правила вы найдете в разделе советов в конце
каждой главы. Помните, что это лишь советы, а не непреложные законы. Советами
стоит пользоваться только там, где это разумно. Они не заменяют ум, опыт,
здравый смысл и хороший вкус.
Я считаю советы вроде «не делайте этого никогда» бесполезными. Поэтому
большинство советов формулируются в виде предложений, что желательно делать,
а негативные утверждения не формулируются в виде абсолютных запретов. Я не
знаю ни одного важного элемента языка C++, примеры полезного применения
которого на практике не встречаются. Раздел «Советы» не содержит пояснений.
Вместо этого, каждый совет снабжается ссылкой на соответствующий раздел книги.
В случае негативных советов, указанный раздел содержит позитивную
альтернативу.
 
Текущее время: 07:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru