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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.81
Demsol
43 / 43 / 9
Регистрация: 16.11.2011
Сообщений: 125
#1

Что лучше для изучения c++ - C++

01.12.2011, 16:19. Просмотров 4805. Ответов 60
Метки нет (Все метки)

Всем привет.
Вообщем, я скачал книгу Павловская "С++ - программирование на языке высокого уровня".
Я довольно неплохо знаю delphi, поверхностно-php, - сейчас решил что пора уже и c++ изучить. Слышал что синтаксис php и c++ схож, думаю в обучении будет легче. Хотелось бы услышать ваши отзывы об этой книге. Является ли она тем, что мне нужно, или вы можете посоветовать что-то другое.
Спасибо за ваши комментарии.

Добавлено через 3 минуты
Добавлю, что хотелось программировать на Borland C++, на Visual нет желания - недолюбливаю продукцию microsoft вообще, а после хотелось бы научиться программировать под *nix системы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2011, 16:19     Что лучше для изучения c++
Посмотрите здесь:
Какой учебник лучше для изучения С++ C++
C++ Выбрал для изучения С++,что дальше?
C++ Что почитать для углубленного изучения C++?
C++ Что следует ЗНАТЬ для начала изучения C++?
Что выбирать для дальнейшего изучения Windows 7 c Win32 или Windows 8 c WinRt? C++
Знаю язык "Си", что нужно знать для изучения Си++, какие у них отличия и т.д? C++
C++ Что лучше для работы с файлами?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
02.12.2011, 19:46     Что лучше для изучения c++ #46
Цитата Сообщение от ValeryLaptev Посмотреть сообщение

Не по теме:

Я знаю, поскольку моих выпускников-дипломников за рубежом достаточно много. И в Европе, и в Америке, и даже в Австралии. Причем, даже наши троечники без проблем устраивались за бугром.

Не по теме:

Возьмите меня в ученики

Сыроежка
Заблокирован
02.12.2011, 20:17     Что лучше для изучения c++ #47
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Эта семантика пришла из С. Ссылок в С не было.
А вы внимательно прочитали, что я написал?! Я спрашиваю это потому, что эта ваша реплика неуместна. В моем сообщении все ясно сказано.

Процитирую себя, любимого, еще раз: "В С/С++ есть тип многомерные массивы, которые в С++ вы можете даже передавать по ссылке."
ValeryLaptev
Эксперт С++
1039 / 818 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
02.12.2011, 23:29     Что лучше для изучения c++ #48
Цитата Сообщение от Сыроежка Посмотреть сообщение
А вы внимательно прочитали, что я написал?! Я спрашиваю это потому, что эта ваша реплика неуместна. В моем сообщении все ясно сказано.

Процитирую себя, любимого, еще раз: "В С/С++ есть тип многомерные массивы, которые в С++ вы можете даже передавать по ссылке."
А вы ВНИМАТЕЛЬНО и МЕДЛЕННО прочитайте мою фразу. Повторю большими буквами: СЕМАНТИКА ОДНОМЕРНЫХ МАССИВОВ УНАСЛЕДОВАНА ОТ С. Это - по стандарту, между прочим, на который вы так любите ссылаться...
В С - не было многомерных массивов и ссылок - не было.
greeezz
02.12.2011, 23:55
  #49

Не по теме:

ValeryLaptev

Я знаю, поскольку моих выпускников-дипломников за рубежом достаточно много. И в Европе, и в Америке, и даже в Австралии. Причем, даже наши троечники без проблем устраивались за бугром.
ну так я просто ваши слова и подтвердил

Сыроежка
Заблокирован
03.12.2011, 03:50     Что лучше для изучения c++ #50
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
А вы ВНИМАТЕЛЬНО и МЕДЛЕННО прочитайте мою фразу. Повторю большими буквами: СЕМАНТИКА ОДНОМЕРНЫХ МАССИВОВ УНАСЛЕДОВАНА ОТ С. Это - по стандарту, между прочим, на который вы так любите ссылаться...
В С - не было многомерных массивов и ссылок - не было.
Увы, вы не исправимы. Я думаю, что вы не внимательно читаете то, что япишу, именно из-за уязвленного самолюбия, что указали вам, что вы не знаете ни С, ни С++!

Я ясно написал, что "В С/С++ есть тип многомерные массивы, которые в С++ вы можете даже передавать по ссылке." Спечиально для вас выделяю жирным шрифтом часть фразы. Заметили, что в выделенной части фразы говорится лишь про С++? Или опять будете делать вид (а может бытьи не вид, а вы действительно не понимааете, что вам пишут), что вы не заметили словочетание "которые в С++".

Но это мелочи по сравнению с тем. что вы даже не знаете, что в С есть многомерные массивы! Я вам настоятельно советую почитать книгу автора языка С Дегниса Ритчи "Язык программирования С", в которой есть параграф, котоырй прямо так и называется "5.7 Многомерные массивы". Если вы не поняли, то я повторю, что эта книга о С, а не о С++! В С++ не изобретали многомерные массивы, как вы наивно думаете.

А самое главное - видите дискуссию корректно! Я нигде не говорил, что в С есть ссылки. Это вы за меня сочиняете, а затем свои фантазии приписываете мне. Надо сохранять, как говорят японцы, лицо, даже если вы безнадежно проигрываете .
ValeryLaptev
Эксперт С++
1039 / 818 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
03.12.2011, 09:01     Что лучше для изучения c++ #51
Цитата Сообщение от Сыроежка Посмотреть сообщение
1. Увы, вы не исправимы. Я думаю, что вы не внимательно читаете то, что япишу, именно из-за уязвленного самолюбия, что указали вам, что вы не знаете ни С, ни С++!

2. Но это мелочи по сравнению с тем. что вы даже не знаете, что в С есть многомерные массивы! Я вам настоятельно советую почитать книгу автора языка С Дегниса Ритчи "Язык программирования С", в которой есть параграф, котоырй прямо так и называется "5.7 Многомерные массивы". Если вы не поняли, то я повторю, что эта книга о С, а не о С++! В С++ не изобретали многомерные массивы, как вы наивно думаете.

3. А самое главное - видите дискуссию корректно! Я нигде не говорил, что в С есть ссылки. Это вы за меня сочиняете, а затем свои фантазии приписываете мне. Надо сохранять, как говорят японцы, лицо, даже если вы безнадежно проигрываете .
0. Я специально пронумеровал, чтобы было понятно, на какую фразу я отвечаю.
1. Это - грубый и хамский наезд - переход на личности. Я вам такого повода не давал.
2. Цитирую Кернигана и Ричи (2001 года, 3-е издание, исправленное и дополненное),
параграф 5.7, стр. 147, второе предложение:
Строго говоря, в Си двумерный массив рассматривается как одномерный массив, каждый элемент которого - также массив.
Будете спорить с Ричи?
3. Опять переход на личности. Причем безосновательный.
Надо сохранять, как говорят японцы, лицо, даже если вы безнадежно проигрываете .
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.12.2011, 09:38     Что лучше для изучения c++ #52
Что касается языка Си, то двумерный массив рассматривается как одномерный массив массивов. Например, матрица int a[M][N] будет рассматриваться как одномерный массив из M элементов, а элементами являются одномерные массивы int a[N]. Поэтому мы может пробежать все элементы матрицы a таким образом:
for(i = 0; i < M*N; i++)
*(*a + i)
Здесь *a - адрес самого первого элемента матрицы (в виде одномерного массива). Если бы матрица не являлась одномерным массивом массивов, то такой код был бы невозможен.

Про то, что матрица рассматривается как одномерный массив и У Ритчи есть, и у Стивена Прата.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
03.12.2011, 11:02     Что лучше для изучения c++ #53
Цитата Сообщение от Thinker Посмотреть сообщение
Если бы матрица не являлась одномерным массивом массивов, то такой код был бы невозможен.
То, что элементы хранятся последовательно, ничего не доказывает.
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.12.2011, 11:25     Что лучше для изучения c++ #54
Цитата Сообщение от fasked Посмотреть сообщение
То, что элементы хранятся последовательно, ничего не доказывает.
А я ничего не доказываю, делать мне больше нечего, просто привожу факты. И если элементы хранятся всегда последовательно и их ровно M*N штук, не массив ли это размера M*N, при условии что мы знаем адрес его начала?
По определению, массив это набор однотипных объектов, последовательно располагающихся в оперативной памяти. А мы именно это и имеем! Ну и какие возражения после этого будут?
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
03.12.2011, 12:03     Что лучше для изучения c++ #55
Цитата Сообщение от Thinker Посмотреть сообщение
И если элементы хранятся всегда последовательно и их ровно M*N штук, не массив ли это размера M*N
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct s {
    int item1;
    int item2;
    /* ... */
    int itemn;
};
 
int main() {
   struct s seq;
   int i;
   
   for (i = 0; i < 3; ++i) {
      *((int *)(&seq + i)) = i;
   }
   
   for (i = 0; i < 3; ++i) {
      printf("%d, ", *((int *)(&seq + i)));
   }   
}
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.12.2011, 12:06     Что лучше для изучения c++ #56
fasked, структура это обобщение массивов. Мой риторический вопрос касался по поводу соотношения понятия матрицы и массива в языке Си, не зря там число M*N фигурирует)
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
03.12.2011, 12:22     Что лучше для изучения c++ #57
Цитата Сообщение от Thinker Посмотреть сообщение
не зря там число M*N фигурирует
C
1
2
3
4
5
6
struct s {
    int item1[M];
    int item2[M];
    /* ... */
    int itemN[M];
};
Цитата Сообщение от Thinker Посмотреть сообщение
структура это обобщение массивов.
Так мы опять скоро придем к тому, что все есть глупые безымянные байты.
Цитата Сообщение от Thinker Посмотреть сообщение
Мой риторический вопрос касался по поводу соотношения понятия матрицы и массива в языке Си
А я говорю о том, что если данные хранятся последовательно в памяти, то это не значит, что они обязательно сформированы в массив.
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.12.2011, 12:27     Что лучше для изучения c++ #58
Цитата Сообщение от fasked Посмотреть сообщение
А я говорю о том, что если данные хранятся последовательно в памяти, то это не значит, что они обязательно сформированы в массив.
Это да, но матрицу мы можем рассматривать как одномерный массив, уж так она хранится. К чему это я. К тому, что некоторые алгоритмы работы с матрицами легче прописать, если обращаться к ее элементам так:
*(*a + i), i=0,...,M*N-1
Мне это важно именно для написания быстрых алгоритмов, а в вопросы, связанные с понятием определения и способом хранения лезть не хочется. Мне важно, что такое обращение к элементам матрицы всегда будет верным, а это зависит от того как матрица хранится.
Сыроежка
Заблокирован
03.12.2011, 16:24     Что лучше для изучения c++ #59
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
0. Я специально пронумеровал, чтобы было понятно, на какую фразу я отвечаю.
1. Это - грубый и хамский наезд - переход на личности. Я вам такого повода не давал.
2. Цитирую Кернигана и Ричи (2001 года, 3-е издание, исправленное и дополненное),
параграф 5.7, стр. 147, второе предложение:

Строго говоря, в Си двумерный массив рассматривается как одномерный массив, каждый элемент которого - также массив.
Будете спорить с Ричи?
3. Опять переход на личности. Причем безосновательный.

Надо сохранять, как говорят японцы, лицо, даже если вы безнадежно проигрываете .
Проблема в том, что я дискуссирую не с Ритчи, а с вами, который не знает языков С/С++ и при этом выдергивает фразы из книги Ритчи, не понимая их смысла.
Давайте разбираться с тем, что вы цитируете без понимания смысла. Во-первых, у меня нет данной книги 2001 года, а есть ее издание 2006 года. И в этой книге фраза звучит несколько по иному "В языке С двумерный массив - это фактически одномерный массив, каждый элемент которого в свою очередь является массивом". О чем здесь говорится? О размещении в памяти двумерного массива. Но самое главное здесь ясно сказано о двумерном массиве. Когда чего-то в языке нет. то об этом не говорят. Какой смысл использовать некорректный термин "двумерный массив", если его в С просто нет? Такая простая мысль вам в голову не приходила?! А что тогда делать с трехмерными масивами, четырехмерными массивами и т.д.? Денис Ритчи для таких, как вы, которые не в состоянии самостоятельно разобраться в вопросе подробно объясняет физическую архитектуру размещения в памяти многомерных массивов. Я вам уже сказал, что в одномерном пространстве, которым является память компьютера многомерные массивы можно только так и расположить. Разве лишь заменив линейное расположение по строкам, расположением по столбцам массива.
Поэтому вы цитируете Дениса Ритчи, а не понимаете. что он пишет. Но это уже вопросы не языка С, а вашего интеллектуального уровня.
Что касается языка С, то в этой же книге есть приложение А "Справочное руководство по языку С", в котором в параграфе Ф.8.6.2 "Описатели массивов" говорится о многомерных массивах и приводится в частности пример трехмерного массива

static int x3d[3][5][7];

Обратите на название идентификатора массива x3d. Значете, что оно означает? Оно означает, чтто массив имеет 3 размерности (d - это от английского слова dimension)
И к этому примеру в книжке дан поясняющий текст (опять-таки заметьте, это Денис Ритчи писал, на которого вы так безграмотно ссылаетесь!):

"Аналогично, следующее объявление создает статический трехмерный массив целых чисел размером 3х5х7.

В отношении же вас проблема связана не с языком С, а с вашим уровнем интеллекта. Просто задайтесь вопросом, если в С нет многомерных массивов, то что означает запись

x3d[3][5][7] ? Спросите любого ребенка, он видет разницу между записью x3d[105] и записью x3d[3][5][7] ? А после того, как ребенок вам ответит, то задайте уже себе вопрос: а зачем придумана запись x3d[3][5][7] если можно записать x3d[105] ? Значит, наверное, первая форма записи несет в себе некоторую смысловую нагрузку, которая отличает ее от второй формы записи, не так ли?

Но, честно признаюсь, мне вообще смешно, что взрослому человеку приходится объяснять банальные вещи на уровне ребенка! В конце-концов, есть стандарт языка С, в котором говорится о многомерных массивах и утверждается, что int x3d[3][5][7] [/B] и int x3d[105] - это два разных типа, где первый тип - это тип трехмерного массива (заметьте, не одномерного и даже не двумерного, а трехмерного!), а второй тип - это тип одномерного массива.

Далее не имеет смысла с вами продолжать дискуссию, так как это уже напоминает комедию, или общение с крайне не адекватным человеком, который даже не в состоянии отдавать себе отчет, что означают фразы, которые он читает. То есть читать вы умеете, но понимать смысл того, что написано не в состоянии. Поэтому я бы вам мог посоветовать открыть стандарт языка С и просто поискать в нем по ключевому слову multidimensional array, но я не вижу в этом смысла, так как вы, как показывает ваше сообщение, все равно не понимаете то, что читаете. Вы все равно будете заявлять, что это просто другое название одномерного массива.

Меня лично не беспокоит ваша безграмотность в вопросах С/С++. Это лично вас должно беспокоить то, что свою безграмотность вы выносите на всеобщее посмешище. Любой квалифицированный грамотный программсит С/С++ вас скажет, что вы несете глупость и задаст простой вопрос: напишите синтаксис объявления многомерного массива и синтаксис объявления олномерного массива. Разницу видите?А теперь попробуйте самостоятельно догадаться без моей помощи, если в С/С++ нет многомерных массивов, то откуда появился такой синтаксис?!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2011, 17:08     Что лучше для изучения c++
Еще ссылки по теме:
C++ Что лучше использовать для низкоуровневого программирования?
Что лучше использовать для свойств объекта? C++
C++ vs C#. Что лучше использовать для поставленных задач? C++
C++, Java или Python. Что лучше для кроссплатформенного десктопа? C++
C++ Что лучше использовать для строк? Массив char или же string?

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

Или воспользуйтесь поиском по форуму:
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
03.12.2011, 17:08     Что лучше для изучения c++ #60
из сообщения
Цитата Сообщение от ValeryLaptev
Цитата Сообщение от Сыроежка
C
1
int m[2][2] = { 1, 1, 2, 2 };
Простая синтаксическая ошибка - отсутствие скобок {} вокруг строк.
это не ошибка
наличие скобок - просто хороший стиль, так же, как и скобки в логических выражениях (которые требует gcc, например)
Yandex
Объявления
03.12.2011, 17:08     Что лучше для изучения c++
Закрытая тема Создать тему
Опции темы

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