Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
guitarman
0 / 0 / 2
Регистрация: 13.07.2013
Сообщений: 10
#1

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

23.07.2013, 11:53. Просмотров 3023. Ответов 13
Метки нет (Все метки)

Всем привет, хотелось бы услышать рекомендации по эффективному изучению языка C++. Изучаю его по книге Дейтелов, пишу и разбираю примеры из книги. Прошёл 7 глав, а дальше уже очень сложно понимать информацию. Осознаю, что теория это хорошо, но не хватает практических навыков.
1) Может нужно учить какие-то алгоритмы или разделы математики? Посоветуйте литературу.
2) Подскажите книгу, где есть базовые задания с решениями.
3) Что может быть полезным на Coursera?
4) Разбор олимпиадных задач.
Расскажите как вы видите изучения программирования. Какую литературу и ресурсы использовать.
Заранее благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2013, 11:53
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как эффективно изучать программирование? (C++):

Как лучше изучать программирование?
Просто читать и конспектировать или на практике? И где брать легкие задачки...

Файл: Как наиболее эффективно разделить строку?
В файле есть например: James 0.8 0.7 0.75 0.5 0.85 J Как наиболее эффективно...

Как научиться эффективно читать чужой код С++
Поделитесь пожалуйста опытом или просто мыслями о том, как всё таки начать...

Не могу сдвинуться с места в изучении C++; Не знаю, как программировать эффективно
Я изучаю C++ уже больше года, но чувствую, что до сил пор не умею им...

Какой язык изучать или что изучать?
Здравствуйте форумчане. какой язык программирования изучать чтоб работать дома...

Как эффективно заменить подстроку в строке на другую подстроку?
И если у подстрок разная длина? есть проверенный готовый способ?

13
dr.curse
392 / 348 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
23.07.2013, 11:57 #2
Цитата Сообщение от guitarman Посмотреть сообщение
4) Разбор олимпиадных задач.
если нужны олимпиадные задачи с разборами посмотри книгу Меньшиков. Олимпиадные задачи по программированию
1
guitarman
0 / 0 / 2
Регистрация: 13.07.2013
Сообщений: 10
23.07.2013, 12:10  [ТС] #3
Жаль, что примеры написаны на паскале.
0
BigLow
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
23.07.2013, 12:14 #4
guitarman, посмотрите здесь
0
Nerock
8 / 7 / 2
Регистрация: 02.05.2012
Сообщений: 92
23.07.2013, 18:38 #5
В тему, на сайте есть даже небольшая обучалка по С++ и задачи, разбитые по темам

прошу прошения ,не только С++, но и другим языкам
0
ViktorKozlov
134 / 126 / 59
Регистрация: 13.12.2012
Сообщений: 293
23.07.2013, 18:47 #6
Цитата Сообщение от guitarman Посмотреть сообщение
по книге Дейтелов
Так там же есть очень много упражнений самых различных уровней сложности
0
Old_Daniel
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 9
18.08.2014, 18:32 #7
Цитата Сообщение от Nerock Посмотреть сообщение
В тему, на этом сайте есть даже небольшая обучалка по С++ и задачи, разбитые по темам
прошу прошения ,не только С++, но и другим языкам
Сложно проверить, потому что на сайт ****.com как-то не удалось зайти.
0
gru74ik
Модератор
Эксперт CЭксперт С++
4648 / 1962 / 293
Регистрация: 20.02.2013
Сообщений: 5,225
Записей в блоге: 23
18.08.2014, 22:26 #8
Цитата Сообщение от 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++, примеры полезного применения
которого на практике не встречаются. Раздел «Советы» не содержит пояснений.
Вместо этого, каждый совет снабжается ссылкой на соответствующий раздел книги.
В случае негативных советов, указанный раздел содержит позитивную
альтернативу.
1
dr.curse
392 / 348 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
18.08.2014, 22:28 #9
gru74ik, думаю ТС ненужны глубокие знания в С++, он СП интересуется
0
gru74ik
18.08.2014, 22:36
  #10

Не по теме:

Цитата Сообщение от dr.curse Посмотреть сообщение
он СП интересуется
Чем-чем?

0
dr.curse
18.08.2014, 22:38
  #11

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
Чем-чем?
СП - спортивное программирование

0
Евгений89
99 / 99 / 39
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
18.08.2014, 23:51 #12
По математике: Высшая математика, Дискретная, Вычислительная ну и Матан.
Насчет задачника , я бы посоветовал: Абрамян 1000 задач по программированию.
По алгоритмам: Томаса Кормен Алгоритмы построение и анализ.
или Кнута, Кормен по легче,
а так если хочешь научиться программировать, пиши программы.
0
Alexandr_1982
179 / 79 / 30
Регистрация: 04.11.2013
Сообщений: 409
Записей в блоге: 4
19.08.2014, 06:34 #13
Эффективного способа нет. Я начинал в 2001 , но некоторые базовые вещи я понял лишь в 2012. Предполагаю, что так и не понял.

Когда я начинал я упустил динамическое выделение памяти и одно связные и двусвязные списки. В ООП нужно понимать, что такое наследование, абстрактный класс, виртуальные функции, операторы. Если не можете сделать задачу, переходите к следующим главам. Вы не знаете теорию, а теорию нужно очень хорошо знать. То, чему вы из 7 глав научились это ерунда. Бросить задачи и читать теорию. Не заморачивацтесь пока что задачами, так как правильно вы их после 7 глав не сделаете. Читайте дальше теорию по книге.
1
gru74ik
Модератор
Эксперт CЭксперт С++
4648 / 1962 / 293
Регистрация: 20.02.2013
Сообщений: 5,225
Записей в блоге: 23
19.08.2014, 06:43 #14
Цитата Сообщение от Alexandr_1982 Посмотреть сообщение
То, чему вы из 7 глав научились это ерунда. Бросить задачи и читать теорию. Не заморачивайтесь пока что задачами, так как правильно вы их после 7 глав не сделаете. Читайте дальше теорию по книге.
Поддерживаю. Максимум - упражнения в конце каждой главы. Тем более, что:
Цитата Сообщение от guitarman Посмотреть сообщение
Изучаю его по книге Дейтелов, пишу и разбираю примеры из книги. Прошёл 7 глав
Это ты только узнал про переменные, циклы, массивы и функции. Чуть-чуть прикоснулся к понятию класса.
Цитата Сообщение от guitarman Посмотреть сообщение
а дальше уже очень сложно понимать информацию.
А дальше, в 8 главе у Дейтелов указатели и ссылки, потом в 9 и 10 более подробно - классы, потом перегрузка операций - без этого точно никак.
0
19.08.2014, 06:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2014, 06:43
Привет! Вот еще темы с решениями:

Как изучать С++ ?
Уважаемые участники форума, я тут на досуге - невзначай решил научиться азам...

Как изучать C++ начинающему?
Здравствуйте, возник этот вопрос. Скачал книгу Страуструпа, изучал её, но после...

Как изучать boost?
День добрый. Очень часто я встречаю упоминание библиотеку буст, её прекрасные...

Как начать изучать C++?
В каком возрасте и как начать изучать C++?


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

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