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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
#1

Простое начинание - C++

11.10.2013, 20:50. Просмотров 1973. Ответов 53

Сразу прошу - не бросайтесь кирпичами.

Предисловие (можно пропустить).
С Си++ знаком очень давно, по сути - это первый язык программирования, с которым я стал более менее серьёзно программировать. От консольных утилит и курсовых с GUI, до игр и серьзных проектов с ассемблером. И за это время я узнал не мало о языке, о его возможностей. Что-то мне в нём нравиться, что-то нет. Но есть очень много новичков, которые хотели бы овладеть этим безусловно очень мощным инструментом (в умелых руках). Поэтому мне вдруг (на самом деле - очень давно) захотелось бы написать небольшое... руководство. С опорой на опыт, а не на рефернсы. Конечно, я не джедай и мне далеко до него. Но так уж получилось, что часто приходилось разных людей учить программированию, а точнее - Си++. Очень разных. Есть небогатый опыт.

Просьба (можно начать отсюда).
Таким образом мне хотелось бы составить список тем, которые требовалось бы осветить. Зачем? Последний сезон Breaking Bad вышел не так уж давно (да, я слоупок) и есть 15 минут, пока сезон скачается байтики соберуться из числа Пи в нужную последовательность, но в голове у меня каша. И таких моментов возникает не мало. Снова сбиваюсь с темы.
Собственно. Темы должны быть полными. При этом хотелось бы, чтобы последовательность изложения была удобной для чтения. Приятной и удобной. Не скучно и эффективно. Прошу здешних форумчан помочь составить базовый список тем Си++, владея которым на уровне, можно было бы считать себя отличным Си++ программистом. К тому же, в свете Си++11 и Си++14, появились определённые новшества, которые, возможно, сильно преобразуют обычный Си++ код. В добавок, хотелось бы сделать уклон в сторону ООП и описать техники, которые позволят избежать очередной пули в ногу. У Вас наверняка есть пара тузов в рукаве.

Что хотелось бы (это так же можно пропустить).
Собственно, в идеале талмуд должен быть интересен как новичкам в Си++, так и новичкам в программировании вообще. Было бы замечательно, если бы описанное было интересно и старичкам. Текст будет (если что получиться) полностью свободным. Приветствуется кооперативное авторство.

Что есть сейчас (это будет обновляться).
Предисловие) Начать хотелось бы с небольшого предисловия о роли языка Си++ в совремнном мире, небольшая справка о историческом значении и субъективный прогноз на будущее.
0) Введение в программирование. Наверное, важная часть, освещающая программирование в целом. Как строятся алгоритмы, что есть структорное программирование (и какие есть альтернативы). Немного о том, как связана математика, схемотехника и информатика. Вообще, какие науки (понятно, что все) изучают программирование и с какой стороны.
1) Базовый синтаксис. Проекция информации из введения в уловные обозначения Си++. То есть, каким образом реализуется структурное программирование в Си++, какова его объектная модель. Никаких сравнений с другими языками программирования.
2) Стандартные алгоритмы. Немного про стандартные алогритмы. В основном - практика.
3) Расширенные возможности. Дополнительные возможности. Всё, что не укладывается в базовый синтаксис по теореме Бома-Якопини.
4) Нетривиальные возможности. Возможности, выходящие за те возможности, которые предоставляет синтаксис с компилятором. Другими словами - какие крутые базовые блоки можно слепить из других базовых блоков.
5) Практика. Вот здесь я уже обессилил. Не представляю, что можно изучить в рамках практики с применением всех возможностей языка. В идеале требуется показать этакий best practice. Боюсь, это будет без всех возможностей.
inf) Приложения. Здесь все дополнения, которые выбиваются из общей канвы повествования.

Заранее благодарю.

P.S. Вполне возможно, из этого ничего и не выйдет. Я просто подумал, что было бы не плохо попробовать. К тому же, вполне вероятно я сам научусь чему-то новому. А если у меня получиться научить кого-то, то это будет просто прекрасно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2013, 20:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Простое начинание (C++):

Помощь в начинание Объектно ориентированного програмирования - C++
Суть такая что не знаю ничего про: Конструкторы Классы Объекты класса Дружественные ф-ции Подскажите литературу по данному...

Дано простое число. Составить функцию,которая будет находить следующее за ним простое число. - C++
дано простое число.составить функцию,которая будет находить следующее за ним простое число.

Дано простое число. Составить функцию, которая будет находить следующее за ним простое число. - C++
6.2.2. Помогите, пожалуйста, решить задачи в С++ с помощью функций. Дано простое число. Составить функцию, которая будет находить...

Дано простое число. Составить функцию, которая будет находить следующее за ним простое число - C++
Дано простое число. Составить функцию, которая будет находить следующее за ним простое число.

Дано простое число. Составить функцию, которая будет находить следующее за ним простое число - C++
Дано простое число. Составить функцию, которая будет находить следующее за ним простое число

Простое число - C++
Вводиться последовательность из N целых положительных элементов. Определить, содержит ли последовательность хотя бы одно простое число. Для...

53
Djam
Саморазвитие <3
34 / 24 / 1
Регистрация: 28.12.2012
Сообщений: 235
Записей в блоге: 1
11.10.2013, 21:16 #16
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Неплохо. А опытом не поделишься? Какие именно возникали проблемы? Читал ли какую-нибудь литературу. Что следует лучше разжевать, а что можно и побыстрее объяснить?
Можно написать я не сомневаюсь, по этому я подправил себя и написал что не совсем трудно!
Проблемы у меня больше связанны с пониманием, как это сделать, логически я могу выстроить последовательность действий, а вот на языке применить, не всегда получается.
Тут наверное это не объяснишь, но все же интересны решения разных логических!!! задач и проблемы у меня возникают с циклами, не всегда понятно, как он должен работать, что в итоге должен сделать, и ещё проблема это с делением по модулю, как работает понятно, а где применять можно не всегда понятно, вроде бы думаешь, тут можно применить, делаешь, результат выходит другой, приходиться разбираться в чем проблема, бывает проблема в своей глупости(усталости кому как угодно) и она решима, а бывает приходиться искать другой метод решения проблемы, т.е все же общая проблема это проблема, использования разных методов решения задач под разные условия.
0
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
11.10.2013, 21:16  [ТС] #17
Цитата Сообщение от ninja2 Посмотреть сообщение
Заканчивается яж тебе говорю С++ это основные операторы ООП, и СТЛ, все остальное это библиотеки - фрейморки. Библиотека и фреймворк это по сути одно и тоже.
Нет ну тогда можно сказать что и ПХП что бы изучить должны года пройти, под пхп тоже тысячи фреймворков зенд фреймвор, кейкпхп, там их не счесть и тоже получается нет конца.
Знаешь если так рассуждать как ты то тогда те функции что ты создаешь тоже есть продолжение С++? Давай будем каждый фреймворк причислять к обязательному изучению в С++. Это не так обязательно нужно учить только СТЛ, все остальное и даром не нужно.
=) Толстовато. Операторы ООП? Что-то новенькое.
PHP тоже не так прост. Но здесь топик не о PHP.
Си++ совсем не так прост, как кажется. За его синтаксисом скрываются огромные возможности. Возможности, которые не предусмотрены самой иделогией Си++. А добавь сюда особую магию с памятью и не слишком хорошую выразительность - шанс промахнуться по ноге равен нулю.
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
11.10.2013, 21:20 #18
Цитата Сообщение от Croessmah Посмотреть сообщение
А STL тогда что такое?
СТЛ библиотека.
Ну я нехочу гуглить в инете и смотреть чем отличается фреймворк от библиотеки, ну это по суди одно и тоже, что библиотека набор функций, что фреймворк, я в пхп просто чуток зенд фреймворк учил, его так же называли и библиотека зенд. Смысл не сильно исказиться нравиться пусть будет библиотека, ну не важно смысл в том что СТЛ это С++ и ее нужно знать, а все остальное множество, это уже друзья ваше дело, хотите учите хотите нет. Просто С++ программист, это 100% он знает СТЛ, а буст либо другую либу, да это не подразумевается.
0
0x10
11.10.2013, 21:22
  #19

Не по теме:

ninja2, на правах вброса: есть проекты, в которых stl принципиально не используют.

0
Djam
Саморазвитие <3
34 / 24 / 1
Регистрация: 28.12.2012
Сообщений: 235
Записей в блоге: 1
11.10.2013, 21:22 #20
В добавок к своему предыдущему посту
Я бы не отказался от советов, где можно прочитать, про алгоритмы или ещё что-то "практика программирования может быть" И ещё, с математикой в школе у меня были проблемы, приходиться ещё и математику иногда подучивать, и Дискретку сейчас пытаюсь учить в свободное время (мало его сейчас)
P.S начал плотно изучать программирование, понял что математика очень интересная и она мне стала нравиться, магия что тут скажешь!
0
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
11.10.2013, 21:23  [ТС] #21
Цитата Сообщение от Croessmah Посмотреть сообщение
AnyOne697, изучайте паттерны, можете почитать Александреску для начала
Паттерны - дикость. Но это ИМХО, никаких холиваров. Я к тому, что лично мой взгляд: у меня есть своя голова и я могу соорудить из базовых объектов новый объект не используя никакие "шаблоны проектирования". Впрочем, кому-то нравиться. Я же за KISS.

Цитата Сообщение от Djam Посмотреть сообщение
Тут наверное это не объяснишь, но все же интересны решения разных логических!!! задач и проблемы у меня возникают с циклами, не всегда понятно, как он должен работать, что в итоге должен сделать, и ещё проблема это с делением по модулю, как работает понятно, а где применять можно не всегда понятно, вроде бы думаешь, тут можно применить, делаешь, результат выходит другой, приходиться разбираться в чем проблема, бывает проблема в своей глупости(усталости кому как угодно) и она решима, а бывает приходиться искать другой метод решения проблемы, т.е все же общая проблема это проблема, использования разных методов решения задач под разные условия.
Поэтому мне бы и хотелось начать с основ всех основ - с самого программирования, алогритмирования. Понятия алгоритм. Лично я начинал с этого, потом сразу перешёл к Си++. Грубо говоря, от блок-схем к практике. И никаких проблем не было.
На мой взгляд, не стоит зацикливаться на реализации. То есть, у нас есть определённый синтаксис и он выполняется вот так: инициализируется, проверяется условие, выполняется блок, инкрементируется. Но это детали. Суть чуть в другом. Сначала стоит разобраться что такое цикл в плане алгоритма и только потом перейти к Си++ и его деталям.
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
11.10.2013, 21:25 #22
Цитата Сообщение от AnyOne697 Посмотреть сообщение
А добавь сюда особую магию с памятью и не слишком хорошую выразительность - шанс промахнуться по ноге равен нулю.
Ну как то я щас с памятью не сильно работаю, это низкий уровень, я использую СТЛ. И вообще я заметил щас я парсер пишу на С++, ниразу мне не приходилось память выделять, использую контейнеры стл и норм, я сам подметил просто, да и две игры писал, тоже не помню, но там тоже не сильно с памятью работал. Да память это так для обучения, ну мб будут какие нить задачи где понадобиться, да мб и указатели понадобиться, а так просто можно писать на С++ и не заморачиваться за память. Даже довольно очень легко. Ну а если нельзя, то спокойно используешь стратегию "выделение ресурса есть инициализация" и не паришься, да трудно подсчитать все new и в деструкторе сделать столько delete. Да это не трудно.
0
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
11.10.2013, 21:25  [ТС] #23
Цитата Сообщение от Djam Посмотреть сообщение
P.S начал плотно изучать программирование, понял что математика очень интересная и она мне стала нравиться, магия что тут скажешь!
Да, магия она интересна. Но ещё круче - разоблачение магии.
Кстати, как насчёт того, чтобы добавить немного математики в книгу. Самой обычной математики с примерами на Си++? Возможно даже удастся вспомнить теорию информации и дискретную математику =)
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
11.10.2013, 21:26 #24
Цитата Сообщение от 0x10 Посмотреть сообщение
Не по теме:
ninja2, на правах вброса: есть проекты, в которых stl принципиально не используют.
Да есть проекты и С++ не используют и что? Мы щас о С++ говорим, а не о библиотеках на С++.
0
Croessmah
Эксперт CЭксперт С++
13419 / 7573 / 855
Регистрация: 27.09.2012
Сообщений: 18,643
Записей в блоге: 3
Завершенные тесты: 1
11.10.2013, 21:27 #25
Цитата Сообщение от Djam Посмотреть сообщение
Я бы не отказался от советов, где можно прочитать, про алгоритмы или ещё что-т
почитайте Кнута

Цитата Сообщение от ninja2 Посмотреть сообщение
в том что СТЛ это С++
STL это то что написано на C++, а не сам C++.
Цитата Сообщение от ninja2 Посмотреть сообщение
а буст либо другую либу, да это не подразумевается
многое из Boost становится частью STL
1
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
11.10.2013, 21:27  [ТС] #26
Цитата Сообщение от ninja2 Посмотреть сообщение
да трудно подсчитать все new и в деструкторе сделать столько delete. Да это не трудно.
Взаимоисключающие параграфы? Слишком толсто, на мой чисто субъективный взгляд.
0
Djam
Саморазвитие <3
34 / 24 / 1
Регистрация: 28.12.2012
Сообщений: 235
Записей в блоге: 1
11.10.2013, 21:28 #27
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Да, магия она интересна. Но ещё круче - разоблачение магии.
Кстати, как насчёт того, чтобы добавить немного математики в книгу. Самой обычной математики с примерами на Си++? Возможно даже удастся вспомнить теорию информации и дискретную математику =)
Я думаю это будет только на пользу .
По поводу того как я начинал учить паскаль, тоже с блок схем и алгоритмов, но как видите все равно есть проблемы, как их леквидировать даже не знаю. Может с опытом придет кто его знает, когда достаточно много уже задач порешаю, думаю тогда и придет понятие того, как это все решать.
P.S Почитал бы Кнута, но как известно, у меня плоховато с математикой, и то что там написано, не всегда понятно
0
0x10
2465 / 1637 / 241
Регистрация: 24.11.2012
Сообщений: 4,040
11.10.2013, 21:29 #28
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Слишком толсто, на мой чисто субъективный взгляд.
Опасно спорить с Гуру.
5
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
11.10.2013, 21:29  [ТС] #29
Цитата Сообщение от Croessmah Посмотреть сообщение
почитайте Кнута
Не советую начинать с него.
Лучше начать с Юкио Сато и учебника математики за 9, 10 и 11 классы. То есть сначала с учебников, потом Юкио Сато (мне эта книга однажды сильно помогла с математикой). Ну а там Кормен и Кнут. Классика. Ещё Седжвик есть.
0
Djam
Саморазвитие <3
34 / 24 / 1
Регистрация: 28.12.2012
Сообщений: 235
Записей в блоге: 1
11.10.2013, 21:29 #30
Цитата Сообщение от Croessmah Посмотреть сообщение
почитайте Кнута
Вы меня опередили=) но я написал причину почему не могу его читать! к сожалению(
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2013, 21:29
Привет! Вот еще темы с ответами:

простое число - C++
Подскажите пожалуйста как проверить является ли число простым?

простое число - C++
Составить программу определяющую яв-ся ли число простым?

Простое вычисление - C++
Проблема при вычислении. A=18; double f = (24/A)^14; Получается 15. На калькуляторе получается 56.123. Не могу понят в чем...

простое число - C++
Проверить,является ли введённое целое положительное число простым. простым называется число, которое имеет только два делителя(еденицу и...


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

Или воспользуйтесь поиском по форуму:
30
Yandex
Объявления
11.10.2013, 21:29
Ответ Создать тему
Опции темы

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