Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Уроки по C++. Обсуждение.  (Прочитано 17538 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн RingOV

  • Активист
  • *
  • Сообщений: 764
    • Просмотр профиля
Re: Уроки по C++. Обсуждение.
« Ответ #60 : 30 Октября 2013, 19:34:57 »
Исправил.
(Нажмите, чтобы показать/скрыть)

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5589
  • Все по палатам!
    • Просмотр профиля
Re: Уроки по C++. Обсуждение.
« Ответ #61 : 30 Октября 2013, 19:44:19 »
RingOV,
Жульничество, скрыли if (D==0) - а это условие осталось.
Надо прямо проверять if (fabs(D) < e), как для "a".
Извините, я все еще учусь

Оффлайн RingOV

  • Активист
  • *
  • Сообщений: 764
    • Просмотр профиля
Re: Уроки по C++. Обсуждение.
« Ответ #62 : 30 Октября 2013, 21:05:18 »
SergeyIT,
Ну почему сразу жульничество? Если число не положительное и не отрицательное, то значит оно 0. Хотя, до конца я не был уверен в этом ветвлении.

Может будет правильнее условие fabs(D) < e поставить на первое место? И если не выполнилось, тогда D > 0 или D < 0?

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Re: Уроки по C++. Обсуждение.
« Ответ #63 : 30 Октября 2013, 21:29:00 »
peregrine, по моему скромному и неквалифицированному мнению,
из нулевого урока надо выкинуть: «компилируемый язык» и всё,
что дальше про компиляцию, линковку, библиотеки. Убрать само
упоминание про Страуструпа, на крайняк строго запретить эту
книгу. И то, что знание Си сильно помогает — сомнительно.

В первом примере лучше не объяснять то, что всё равно непонятно.
Лучше придерживаться правила «хочу и буду». Т. е., просто сказать:
Надо делать так, так и так.

А вот здесь очень неточно:

«Не путайте знак присваивания a=7 со знаком равенства a==7.
Первое выражение даст истину, так как функция присваивания вернёт
указатель на изменённый объект, т.е. на число 7.»

Правильнее как-то так: «Не путайте операцию присваивания a=7
с операцией сравнения a==7. Присваивание в Си++ — это именно
операция, вроде сложения. Операция сложения 2+3 даёт результат
5. Операция присваивания a=7 даёт результат 7. И в Си++ можно
писать a=b=c=3*3, это значит следующее: a= ( b=( c=3*3 ) ),
а словами — вычислить 3*3, результат записать в c, теперь то,
что записано в c, записать в b, теперь то, что записано в b,
записать в a. В итоге a, b и c получат значения 9.

И если вы пишете if (a=7), то это значит:
1. Сделать a равным 7.
2. Сравнить результат (7) с нулем. (А 7 никогда не равно 0.)
3. Если не равно нулю, выполнить ... и т. д.
(Нажмите, чтобы показать/скрыть)
А если вы пишете if (a==7), то это значит:
1. Проверить, a равно 7?
2. Если равно, то выполнить ... и т. д.»

Можно ещё в сносочке указать, в чём профит такого изврата:
if ( errorlevel=test_function() ) { /* ... */ } — греет
душу своей краткостью. И вот, кстати только это, да ещё
while ( *dest++ = *src++ ) ; и addr=&var; для начала
нужно из Си.

Да, а в цитате: это никакая не функция присваивания, и вовсе
не указатель она возвращает. И не на объект.

И вот что по урокам: пока не видел ни одного материала по Плюсам,
который был бы именно про Плюсы.

В лучшем случае начинается всё как лирический рассказ про то, что
круг — это геометрическая фигура, и квадрат тоже, и про то, что они
могут быть разного цвета   :-\  А то и вообще про каких-то друзей
с членами  :idiot2:

Казалось бы, приведите простой пример — работу с комплексными
числами с помощью тех же арифметических операций, что и для
действительных.

Это ж круто: пишем c=a*b, а вычисляется
re(c)=re(a)*re(b)-im(a)*im(b); im(c)=re(a)*im(b)+re(b)*im(a);



И да, должен с прискорбием заметить, что мы изучаем здесь
программирование вообще как таковое, численные методы,
различный софт, да что угодно, но никак не C++!

« Последнее редактирование: 30 Октября 2013, 21:33:09 от inkblack »
Делюсь знаниями, но их у меня мало!

Оффлайн Grigory Smirnov

  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по C++. Обсуждение.
« Ответ #64 : 31 Октября 2013, 17:17:56 »
inkblack, программирования на C++ состоит из программирования как такового...

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Re: Уроки по C++. Обсуждение.
« Ответ #65 : 03 Ноября 2013, 00:50:44 »
ИМХО, эти уроки читают люди, которые вполне знакомы с программированием.
Им не надо объяснять, что такое if,  что такое for и т. п.

А вот например это — действительно нетривиальная фишка:
Код: (Cpp) [Выделить]
int i = 0;
int& r = i;
r++;        // i увеличивается на 1

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

По поводу учебников: насчет Страуструпа немного погорячился.
На самом деле надо из этой книги выкинуть к чертовой матери
всё, что идёт раньше главы 2. Да и половина второй главы
тоже имеет сомнительную ценность.

А вот совершенно случайно, благодаря этому сообщению нашел
отличный материал: stolyarov.info/books/cppintro!

MUST read, если только начинаете изучать Плюсы.

Попробуйте прочитать страниц 30, а потом Страуструпа примерно со слов
«В качестве примера определим простой ассоциативный массив».

Там в тексте книги даны фрагменты простенького примера, надо
из них собрать работающую прогу, только задать размер поменьше:
Код: (Cpp) [Выделить]
const int large = 5;И добиться осмысленного поведения этой проги, когда ей дают
на вход что-нибудь вроде
Код: (text) [Выделить]
A  B B  C C C  D D D D  E E E E E  F F F F F F;)

Вот это действительно Си с лёгким ароматом Си++.
« Последнее редактирование: 04 Ноября 2013, 00:17:47 от inkblack »
Делюсь знаниями, но их у меня мало!

Оффлайн Grigory Smirnov

  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по C++. Обсуждение.
« Ответ #66 : 03 Ноября 2013, 19:14:13 »
inkblack,
Цитировать
ИМХО, эти уроки читают люди, которые вполне знакомы с программированием.
Вот не надо, уроки должны быть доступны для всех.

Оффлайн tagezi

  • Активист
  • *
  • Сообщений: 359
    • Просмотр профиля
    • Информатика в экономике и управлении
Re: Уроки по C++. Обсуждение.
« Ответ #67 : 03 Ноября 2013, 19:28:56 »
quote author=inkblack link=topic=232195.msg1819550#msg1819550 date=1383425444]
ИМХО, эти уроки читают люди, которые вполне знакомы с программированием.
Им не надо объяснять, что такое if,  что такое for и т. п.[/quote]
Те кто знаком с программированием читают документацию и доступный код.
Остальные думают что программирование заключено в языке, и читают уроки.
ASUS K53E, intel i5, 8 Gb, Integrated Intel® GMA HD
wiki LibreOffice
справка LibreOffice

Оффлайн inkblack

  • Старожил
  • *
  • Сообщений: 1216
    • Просмотр профиля
Re: Уроки по C++. Обсуждение.
« Ответ #68 : 04 Ноября 2013, 00:16:25 »
... уроки должны быть доступны для всех.
Вот не знаю, ИМХО, начинать изучение программирования прямо с Си++ — бред.

Те кто знаком с программированием читают документацию и доступный код.
...

Просто интересно, что вы имеется в виду, когда это говорите?
Можно попросить ссылку какую-нибудь на то и на другое?
Делюсь знаниями, но их у меня мало!

Оффлайн peregrine

  • Автор темы
  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7203
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: Уроки по C++. Обсуждение.
« Ответ #69 : 04 Ноября 2013, 02:18:33 »
inkblack, так будет правильно?
И если вы пишете if (a=7), то это значит:
1) Приравнять переменную a к 7
2) Код станет по сути эквивалентен if(7)
3) Конструкция if(7) работает таким образом:
3.1) Проверяется равенство 7 и 0
3.2) Если 7!=0, тогда выполняется блок if
3.3) В противном случае выполняется блок else (если имеется)
PS искал это в стандарте C++, не нашёл, так как стандарт здоровый, а свободного времени сейчас у меня совсем мало.
inkblack, иногда и с C++ начинают, есть такое на территории РФ, как это не печально. С другой стороны любой программист на C++ начинал с азов, кроме Старуструпа, он эти азы изобретал.
Цитировать
Те кто знаком с программированием читают документацию и доступный код.
Ну Вы и даёте...
Документация - она же стандарт - это как словарь. Много людей по словарю английский выучили? Книга Страуструпа - первоисточник, но её надо читать, умея программировать на C++, не совсем идеально, но умея, ИМХО. Читать доступный код - жесть. Да, иногда поковыряться в исходниках какой-либо открытой программы, например gnote - полезно, особенно, если там используется какая-либо библиотека, к которой крайне мало документации, а работать по каким-то причинам надо именно с ней. (сама библиотека может быть очень огромная).
(Нажмите, чтобы показать/скрыть)
Но изучать программирование таким образом, это очень плохо. Так как, не понимая до конца, как работает тот или иной код Вы ничему путному не научитесь. На самом деле, даже такая элементарная вещь, как считывание двумерного массива из текстового файла, примерно такого содержания (строк и столбцов может быть сколько душе угодно, до разумных пределов, в пять-шесть тысяч элементов)
7 8 9 45
65 98 -69 41
32 0 18 -8
68 9 1 5
1 3 0 7
4 5 3 9
для новичка будет не самой лёгкой задачей. Поди посчитай, сколько строк и сколько столбцов (в файле не хранятся, за ненадобностью). А сколько памяти выделить? А валидный ли файл? А то, вдруг в строке 52 будет не 36 чисел, как во всех остальных, а 32? А если и на vector наложить запрет...

Оффлайн tagezi

  • Активист
  • *
  • Сообщений: 359
    • Просмотр профиля
    • Информатика в экономике и управлении
Re: Уроки по C++. Обсуждение.
« Ответ #70 : 04 Ноября 2013, 14:12:57 »
Уважаемый peregrine, вы читаете чужие сообщения, или вас интересует только собственный ответ? =)
(Нажмите, чтобы показать/скрыть)
Цитировать
Много людей по словарю английский выучили?
1) Лингвисты часто учат новые языки по тексту даже, а не по словарю, и считают это более лучшим способом. Люди которые Знают несколько языков делают обычно тоже самое - текст и словарь.
2) Программирование - это математика прежде всего: с логикой, численными методами и дискретной математикой.
Правильно написай алгоритм на любом языке будет работать.
Язык программирования не равен языку речи, язык программирования - это синтаксис, в который записывается алгоритм, и объектноориентированые языки в том числе. Синтаксис с небольшими своими плюшками.
Цитировать
Книга Страуструпа - первоисточник, но её надо читать, умея программировать на C++, не совсем идеально, но умея, ИМХО.
Добавь те меня в свой музей динозавров. Первая книга которую я прочел была именно она. Qt я учил по сайту нокии (документации). "С++ за 24 часа" и Бланшет и Со я считал уже через довольно приличное время и только по тому что мои друзья туда ссылались и задавали вопросы. Ничего нового в этих книгах не нашёл.

(Нажмите, чтобы показать/скрыть)
ASUS K53E, intel i5, 8 Gb, Integrated Intel® GMA HD
wiki LibreOffice
справка LibreOffice

Оффлайн Adigezalov

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Уроки по C++. Обсуждение.
« Ответ #71 : 17 Ноября 2013, 23:44:39 »
Когда следующий урок?  :)
Ubuntu 13.10 x64
Windows 8.1

Оффлайн peregrine

  • Автор темы
  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7203
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: Уроки по C++. Обсуждение.
« Ответ #72 : 18 Ноября 2013, 00:32:29 »
Adigezalov, когда будет время. Думаю, в течении 2-ух недель.

Оффлайн mglobex

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Re: Домашнее задание:Уроки по C++. Урок 0
« Ответ #73 : 07 Декабря 2013, 12:56:04 »
1)Пользователь вводит с клавиатуры 2 целых числа, надо посчитать их разность.
//summa.cpp
#include <iostream>
 
int main ()
{
    int a, b;//Объявляем 2 переменные типа int, т.е. целые числа в диапазоне от -2147483648 до 2147483647
    std::cout << "Введите 2 целых числа через пробел" << std::endl;
    std::cin >> a >> b; //Считываем подряд две переменные a и b
    std::cout << a << "+" << b << "=" << a-b << std::endl;//текст при выводе надо заключать в "", а переменные нет.
    return 0;
}
2)Пользователь вводит с клавиатуры 3 целых числа a b и c. Найти значение x формулы x=2*a+4*b-9*c и вывести число x на экран.
//summa.cpp
#include <iostream>
 
int main ()
{
    int a, b, c;//Объявляем 3 переменные типа int, т.е. целые числа в диапазоне от -2147483648 до 2147483647
    std::cout << "x=2*a+4*b-9*c" << std::endl;
    std::cout << "Введите 3 целых числа a b и с через пробел" << std::endl;
    std::cin >> a >> b >> c; //Считываем подряд две переменные a и b и с
    std::cout << "x=" << 2*a+4*b-9*c <<std::endl;//текст при выводе надо заключать в "", а переменные нет.
    return 0;
}

Оффлайн Señor_Gaga

  • Забанен
  • Активист
  • *
  • Сообщений: 878
  • Ubuntu 12.04LTS & Linux Mint 13LTS "Maya"
    • Просмотр профиля
Re: Уроки по C++. Обсуждение.
« Ответ #74 : 07 Декабря 2013, 14:27:48 »
[удалено модератором]

На форуме ЗАПРЕЩЕНО
2.3. Флудить и заниматься флеймом, а так же оставлять сообщения, не относящиеся к теме обсуждения.


--andrew_bye
« Последнее редактирование: 07 Декабря 2013, 15:52:38 от andrew_bye »

 

Страница сгенерирована за 0.06 секунд. Запросов: 25.