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

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

Войти
Регистрация
Восстановить пароль
 
Menma
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 20
#1

О подходах к программированию (по Г.Шилдту) - C++

02.11.2013, 22:14. Просмотров 410. Ответов 8
Метки нет (Все метки)

Начала изучать цпп по книге Шилдта "C++. Руководство для начинающих" и уже столкнулась с одной неясностью.
В самом общем смысле любую программу можно организовать одним из двух способов: опираясь на код (действия) или на данные (информация, на которую направлены эти действия).
И далее пишется о том, что структурированное программирование основано на первом способе, а ООП - на втором.

Мне не совсем ясно, как это: программировать, опираясь на код, и программировать, опираясь на данные. Не могу себе представить, возможно, не хватает наглядности.
Дорогие программисты, прошу прояснить мне этот момент. Разжевывание на пальцах приветствуется.
0
Миниатюры
О подходах к программированию (по Г.Шилдту)  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2013, 22:14
Я подобрал для вас темы с готовыми решениями и ответами на вопрос О подходах к программированию (по Г.Шилдту) (C++):

Какая книга по программированию обьясняет все с математикой и подробно излагает все темы?По программированию? - C++
Не Бьерн Страуструп?А то не нравится мне у Лафоре тип изложения книги,довольно не в мою логику там упирается,да и нравится перестал,уж...

AS 3.0 Оптимизация нагрузки при разных подходах использования графики - ActionScript
Сделал интерфейс игры (Портрет героя с хп, инвентарь в виде ячеек в верху екрана, кнопка меню). Потом наложил на них фильтры тень, фаску в...

Download Manager на Java по Шилдту - Java
Разбираюсь с Java. Взял Download Manager из книги Г. Шилдта "Java. Полное руководство. 8-е издание". В принципе, все ясно, все понятно, но...

Многопоточное программирование по Шилдту: разобрать код - C#
Друзья, у меня вопрос от новичка. Читаю книгу Шилдта и вот дошёл до главы многопоточного программирования. В книге приведён следующий...

.NET 4.x Многопоточность (по Шилдту) - разобрать строку кода - C#
Здравствуйте! У меня вопрос: в чем смысл строки кода if(currentName != Thrd.Name) в методе Run() класса MyThread? Через конструктор класса...

Где найти задачи по Шилдту "Полное руководство С# 4.0" - C#
Добрый день всем программистам и не только! Подскажите пожалуйста ответ на такой вопрос: Читаю книгу Герберта Шилдта Полное руководство...

8
SanchezPluz
49 / 49 / 1
Регистрация: 31.10.2012
Сообщений: 481
02.11.2013, 22:24 #2
Не знаю как вам, но по С++ из книг лучше только у самого создателя языка Бьерна Страуструпа.
В ООП программируются объекты (классы, функции и т.п.). Из них мы создаем данные для последующих действующих модулей.
Например, у нас есть класс Dog, в котором описываются функции Eat и Sleep:
C++
1
2
3
4
5
class Dog
{
     void Eat ();
     void Sleep ();
};
Так мы создали некие данные, которыми мы потом будем пользоваться. Теперь задействуем их:
C++
1
2
3
4
5
6
7
8
9
// Некая собака ест
void Dog::Eat ()
{
     BOOL isEat;
     if (isEat == FALSE)
     {
      // Собака не поела. Нужно, чтобы она сделала это.
     }
}
Потом мы можем создать экземпляр этого класса, получая конкретный запрограммированный алгоритм. Как-то так.
Поправьте, если что-то не так.
1
dzrkot
zzzZZZ...
523 / 354 / 54
Регистрация: 11.09.2013
Сообщений: 2,039
02.11.2013, 22:34 #3
Такие вещи понимаются со временем, не стоит на них зависать, читайте дальше)
1
MrGluck
Модератор
Эксперт CЭксперт С++
7801 / 4845 / 754
Регистрация: 29.11.2010
Сообщений: 13,212
02.11.2013, 22:58 #4
1.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
int sum(const int a, const int b)
{
    return a + b;
}
 
int foo(const int a, const int b)
{
    return sum(a, b) * 2;
}
 
void print(int x, int y)
{
    std::cout << foo(x, y) << std::endl;
}
 
int main()
{
    print(5, 2);
}
2.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
class SuperCalculation
{
  public:
    SuperCalculation(const int x1, const int y1) : x(x1), y(y1) {}
    void printCalculation() const { std::cout << calculation() << std::endl; }
    int calculation() const { return (x + y) * 2; }
 
  private:
    int x, y;
};
 
int main()
{
    SuperCalculation sc(5, 2);
    sc.printCalculation();
}
Добавлено через 2 минуты
В ООП мы моделируем объекты и их естественное поведение, при структурированном программировании (например в С), нас больше волнуют конкретные данные.
1
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
02.11.2013, 23:02 #5
MrGluck, а почему sum и foo принимают const int, а print просто int?
0
gazlan
3139 / 1915 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
02.11.2013, 23:40 #6
Цитата Сообщение от Menma Посмотреть сообщение
программировать, опираясь на код, и программировать, опираясь на данные
Это два разных мировоззрения.

В первом случае (опора на код) выстраивается жесткая "авторитарная" централизованная структура, следящая за всем и контролирующая все. Утрируя, "данные - ничто, поток управления все".

Вторую модель можно назвать "демократической": возможность принимать решения делегируется на уровень объектов (связка данных и методов). "Центр" следит только за общим направлением деятельности подчиненных объектов, оставляя на их собственное усмотрение детали реализации.

Для достаточно сложных ("больших") систем, "авторитарный" подход оказался провален: сложность управления (число связей) растет квадратично с ростом размера системы. "Динозавры" вымерли.

"Демократический" подход не лишен недостатков, но позволяет снизить затраты на управление за счет "декомпозиции сложности": мелкие вопросы решаются "по месту", на уровень выше выносятся только те, что превышают компетенцию исполнителя.
2
MrGluck
Модератор
Эксперт CЭксперт С++
7801 / 4845 / 754
Регистрация: 29.11.2010
Сообщений: 13,212
03.11.2013, 02:17 #7
Цитата Сообщение от Tulosba Посмотреть сообщение
MrGluck, а почему sum и foo принимают const int, а print просто int?

Не по теме:

случайно вышло. Сначала написал в main int x, y. Потом скопировал, вставил в параметры функции и дописал int. Обычно const пишется на автомате (например в функциях я параметры набирал вручную и его дописал)

0
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
03.11.2013, 09:47 #8
MrGluck, просто когда речь идёт о передаче по значению особого смысла добавлять const нет.
0
MrGluck
03.11.2013, 09:49     О подходах к программированию (по Г.Шилдту)
  #9

Не по теме:

Привычка - пихаю const всюду кроме тех случаев, где его ставить нельзя.

0
03.11.2013, 09:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2013, 09:49
Привет! Вот еще темы с ответами:

курсовая по программированию - C++
Составить программы построения на экране известных математических кривых, заданных уравнениями в параметрическом виде (a&gt;0): а) ...

Тренажер по программированию - C++ Builder
Всем добрый день. Пожалуйста помогите составить тренажер по программированию. Незнаю что именно можно составить. Уже весь гугл облазил

Лаба по программированию - C++
Известен вещественный знакопеременный двумерный массив K=(Kij), i=1,2,..5, j=1,2,..7 Вычислить разность между максимальными и...

курировать по программированию - C++
Ищу человека который за благодарность будет направлять по правильному пути в программирование. Хочу разобраться в основах программирования....


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

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

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