Jump to content

применение с++


vvsh
 Share

Recommended Posts

в 1 семестре начали проходить с++ за сем дошли до указателей (во 2 их начнем)

прошли: типы, константы, операции, функции (передача по ссылке, по значению), потоки ввода/вывода, циклы, массивы, строки (char)

я сам уже прошел указатели, и основы ООП.

мы весь сем решали мат. задачи разные, уже от них тошнит. что реально полезное можно написать зная вот это все вышеперечисленное?

спасибо

Link to comment
Share on other sites

Лучше ещё пару лет поучиться, а потом начинать писать что-то полезное. Для себя можно писать что угодно (будет очень полезно для практики). Я во время первых лет обучения, кроме лабораторных писал маленькие игрушки всякие: мини-квесты, игровые автоматы, очень простые платформеры. Ещё писал напоминалку о днях рождения, генератор случайных названий, составитель кроссвордов (непросто написать, но интересно). В конце второго курса ушёл в 3D-графику - до окончания института так из неё и не вышел ))). Вот

сделал. Да много чего было, не вспомню уже. В любом случае лучше писать какую-нибудь бесполезную лабуду чем ничего не писать.

P.S. Для половины того, что я перечислил потребуется GUI. Насколько я понял, до этого дело ещё не дошло.

Edited by ZI DAN
Link to comment
Share on other sites

в 1 семестре начали проходить с++ за сем дошли до указателей (во 2 их начнем)

прошли: типы, константы, операции, функции (передача по ссылке, по значению), потоки ввода/вывода, циклы, массивы, строки (char)

я сам уже прошел указатели, и основы ООП.

мы весь сем решали мат. задачи разные, уже от них тошнит. что реально полезное можно написать зная вот это все вышеперечисленное?

спасибо

Да всё, что угодно: демон-планировщик, сайт, парсер, спам-рассыльщик, «хеллоу ворлд!», графический редактор, кейлоггер, драйвер, операционную систему... Продолжать?

Link to comment
Share on other sites

Я сейчас в свободное время тоже учу C++. В книге все примеры - это в основном работа с консолью и мне вот тоже не понятно как написать хоть какое-нибудь элементарное десктопное приложение, а то с консолью работать не интересно? А то этот cout и cin уже задрали...

Для этого нужна какая-нибудь среда разработки или что? Вот стоит у меня IDE Code::Blocks - этого достаточно или нужно параллельно Visual C++ осваивать?

Link to comment
Share on other sites

Я сейчас в свободное время тоже учу C++. В книге все примеры - это в основном работа с консолью и мне вот тоже не понятно как написать хоть какое-нибудь элементарное десктопное приложение, а то с консолью работать не интересно? А то этот cout и cin уже задрали...

вот именно - задрала... и консоль и потоки эти.. на практике мы делали в основном такое (например):

циклически сдвинуть массив, посчитать кол-во единиц в битовом представлении, синус через ряд тейлора, и всякая подобная фигня.

Да всё, что угодно: демон-планировщик, сайт, парсер, спам-рассыльщик, «хеллоу ворлд!», графический редактор, кейлоггер, драйвер, операционную систему... Продолжать?

вряд ли все что угодно... мы только с консолью фигачили...

Лучше ещё пару лет поучиться, а потом начинать писать что-то полезное. Для себя можно писать что угодно (будет очень полезно для практики). Я во время первых лет обучения, кроме лабораторных писал маленькие игрушки всякие: мини-квесты, игровые автоматы, очень простые платформеры. Ещё писал напоминалку о днях рождения, генератор случайных названий, составитель кроссвордов (непросто написать, но интересно). В конце второго курса ушёл в 3D-графику - до окончания института так из неё и не вышел ))). Вот такой диплом сделал. Да много чего было, не вспомню уже. В любом случае лучше писать какую-нибудь бесполезную лабуду чем ничего не писать.

мне кажется до квестов еще далеко.

диплом оч понравился, здорово)

Link to comment
Share on other sites

Да и с консолью можно ого-го чего наворотить. Тут главное поискать что-нибудь по программам 80-90-х годов, которые все были консольные. Много игр писали под программируемые калькуляторы МК-61 и МК-62. Там тоже консоль, зато воображение в этих играх развивалось хорошо. Игра Zork, к примеру, тоже текстовой была, но пользовалась огромной популярностью.

Link to comment
Share on other sites

Да и с консолью можно ого-го чего наворотить.

Да и на бумажке можно такой код написать... Я ж говорю - сконсолью работать не интересно и скучно. Гораздо интересней было б сразу заюзать какой-нить GUI хоть бы и для "Hello world!".

ZI DAN, че-нить посоветуете? Или продолжать дальше с консолью заниматься?

vvsh, раз вы там в институте целый семестр учили, то может объясните мне чем так хороши ссылки и указатели? Я вот убей не понимаю нафиг они нужны... В JS я без них прекрасно обхожусь... А с ними сплошной гемор, чуть забыл обнулить и утечка памяти обеспечена. Все примеры из книги не иллюстрируют необходимость их использования, т.е. я все те же программы из примеров с успехом перепишу при помощи обычных переменных.

Link to comment
Share on other sites

Да и на бумажке можно такой код написать... Я ж говорю - сконсолью работать не интересно и скучно. Гораздо интересней было б сразу заюзать какой-нить GUI хоть бы и для "Hello world!".

vvsh, раз вы там в институте целый семестр учили, то может объясните мне чем так хороши ссылки и указатели? Я вот убей не понимаю нафиг они нужны... В JS я без них прекрасно обхожусь... А с ними сплошной гемор, чуть забыл обнулить и утечка памяти обеспечена. Все примеры из книги не иллюстрируют необходимость их использования, т.е. я все те же программы из примеров с успехом перепишу при помощи обычных переменных.

можно на ты =)

особого применения я тоже не придумал. но например с помощью указать можно создать динамический массив (стандартными средствами не получиться):

int n = 100; // размерность массива
int *a = new int[n];

еще пример, в c++ в функции нельзя возвращать массив, но можно сделать так (прога создает массив переворачивает его и выводит):

void change(int *a, int n)
{
for (int i = 0; i < n/2; i++)
swap(a[i], a[n - i - 1]); // меняет местами два элемента
}

int main()
{
int n = 100; // размерность массива
int *a = new int[n];

for (int i = 0; i < n; i++) a[i] = i;

change(a, n);

for (int i = 0; i < n; i++) cout << a[i] << endl;

system("pause");
}

Edited by vvsh
Link to comment
Share on other sites

Указатели — вообще тема. Например, можно линеёно построить дерево без использования функций и рекурсии. Ну или вот такой пример. Надо, допустим, сделать выборку из базы. Пусть это будут новости. И получить нам надо 10 последних. А одновременно с этим узнать сколько же новостей всего у нас есть. Можно сделать это двумя способами:

1. Одной функцией сделать выборку, а второй сделать запрос COUNT и вернуть количество. Две функции получается.

2. Делаем запрос, используя SQL_CALC_FOUND_ROWS, возвращаем при помощи return последние 10 новостей, а через указатель передаём общее количество. Это получается одна функция. Профит налицо.

Link to comment
Share on other sites

Хм... значит все-таки кое-что сделать можно только при помощи указателей. Ок, спасибо, буду вчитываться дальше.

еще например работа с файлами.. тоже без указателей далеко не уедешь.

я думаю тут еще найдутся люди которые знают уже c++ и приведут примеры получше)

Link to comment
Share on other sites

Ок, на ты значит :)

Ну и нафиг он нужен этот динамический массив? Чем обычный не угодил?

в вашем понимание наверное обычный и есть динамический, потому как статический - это с точным указанием элементов массива без последущего изменения размера массива.

php, js вообще поверхостно к программированию относятся по этому сравнивать их с низкоуровневым программированием всё равно что ездить на автомобиле или понимать как он устроен.

А вообще да скукотой придётся заниматься выучить надо изначально базу с++ (есесено ООП ту да же)

Потом прочитать ещё книжку или faq про visual studio (подключение модулей, на каком проекте работать и т.д. и т.п.) и остаётся только набиратся опыту.

с++ это вам не php, тут терпение и время нужно...

Edited by gradus
Link to comment
Share on other sites

php, js вообще поверхостно к программированию относятся по этому сравнивать их с низкоуровневым программированием всё равно что ездить на автомобиле или понимать как он устроен.

Низкоуровневое программирования это что? Ассемблер? Си это самый настоящий ЯВУ.

с++ это вам не php, тут терпение и время нужно...

Что за отношение к PHP? Нормальный язык. Надо просто уметь им пользоваться.

Link to comment
Share on other sites

Низкоуровневое программирования это что? Ассемблер? Си это самый настоящий ЯВУ.

Что за отношение к PHP? Нормальный язык. Надо просто уметь им пользоваться.

отличное отношение кто сказал что плохое ? вы видимо не так поняли мой пост

Link to comment
Share on other sites

что реально полезное можно написать зная вот это все вышеперечисленное?
Считай из файла ненаправленный граф из n вершин в виде квадратной матрицы, в которой graph[n][m]=1 - есть ребро между вершинами n и m, а graph[n][m]=0 - нет ребра. И посчитай кратчайший маршрут от вершины n1 до вершины n2 (задаются параметрами командной строки). Результат представить в виде номеров вершин через запятую. Нумерация вершин начинается с нуля, некоторые вершины могут не иметь рёбер, но для нормального алгоритма это не важно.

Давай договоримся матрицу хранить в виде строки чисел через пробел. Длина строки - квадратный корень из числа элементов (ну это очевидно). Мне нужен exeшник. Если будет работать быстрее моего кода на PHP, возьму себе :)

//ААААА!! Срочно реквестирую граммар наци в топик! Ни одного грамотного поста длиньше двух предложений.

Link to comment
Share on other sites

Низкоуровневое программирования это что? Ассемблер? Си это самый настоящий ЯВУ.

Что за отношение к PHP? Нормальный язык. Надо просто уметь им пользоваться.

php и с++ разные языки... на C вряд ли сделаешь то что на php, а на php то что на C.

Link to comment
Share on other sites

ZI DAN, че-нить посоветуете? Или продолжать дальше с консолью заниматься?

Я, вообще, C# изучал (на нём диплом и написан), но в обучении особой разницы нет. Мы в институте с консолью ровно год работали. Можно было и дольше. Сразу "напрыгивать" на GUI не советую. В консоли нужно хорошо набить руку: досконально изучить ООП, работу с основными классами, работу с файлами, работу с сетью (у нас не было такой возможности в институте), решить кучу типовых задач (очереди, стеки, деревья, рекурсия и т.д.). Потом, когда переходишь на GUI, хорошо получается строить архитектуру. Т.е. оптимально делить приложение на классы и библиотеки, а не раскидывать основной код по интерфейсу как попало.

Edited by ZI DAN
Link to comment
Share on other sites

Ок, на ты значит :)

Ну и нафиг он нужен этот динамический массив? Чем обычный не угодил?

я, конечно, опоздал с ответом, но вопрос важный :)

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

В принципе, в ЯВУ (тот же JS) «обычный» массив не имеет предопределенного размера, в C/C++ память под массивы/строки нужно выделять самостоятельно, а для этого нужно знать заранее, сколько нужно памяти. А если эти данные вводтся во время выполнения или читаются из файла или по сети, то память придется выделять динамически, по мере поступления данных.

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

То есть в JS на самом деле происходит все то же самое, но это выполняется интерпретатором, программисту думать о деталях реализации не обязательно (хотя знать полезно).

С/С++ все-таки к полноценным ЯВУ отнести нельзя, хорошее название — язык среднего уровня, как минимум потому, что памятью надо управдять самостоятельно, и предоставляются широкие возможности по работе с непосредственным представлением данных.

И да, я не понимаю, как можно не любить консоль :)

Link to comment
Share on other sites

тошнит уже от этого черного окна =) еще русский язык так просто хрен выведешь ток спец методами.

Ну так попробуйте вижуал... Если знание языка уже есть то вижуал осваивается легко...

Я сейчас работаю над бот программой которую пишу под игру lineage 2 для руофа на вижуал студии... 99% работы именно работа с данными, прием отправка трафика. Не знаю где вы нашли скукоту я когда изучал pascal первым языком мне вообще казалось что я запредельный хакер который пишет основы основ ))) простым примером была миниатюрная программка способная крашить win98 в институте я правда помню были более веселые варианты с гиф картинками со скоростью 0 винда вешалась ))) правда быстро вышла заплатка...

Link to comment
Share on other sites

пишу я в вижуале ибо он не такой тупой как билдер...

я создал проект Win32 там пустое приложение пару пунктов меню...

максимум редактированием кода мне удалось добавить свои пункты меню и сделать пару окон..

но там все на настолько низком уровне, что пипец.

Link to comment
Share on other sites

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

В принципе, в ЯВУ (тот же JS) «обычный» массив не имеет предопределенного размера, в C/C++ память под массивы/строки нужно выделять самостоятельно, а для этого нужно знать заранее, сколько нужно памяти. А если эти данные вводтся во время выполнения или читаются из файла или по сети, то память придется выделять динамически, по мере поступления данных.

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

То есть в JS на самом деле происходит все то же самое, но это выполняется интерпретатором, программисту думать о деталях реализации не обязательно (хотя знать полезно).

С/С++ все-таки к полноценным ЯВУ отнести нельзя, хорошее название — язык среднего уровня, как минимум потому, что памятью надо управдять самостоятельно, и предоставляются широкие возможности по работе с непосредственным представлением данных.

ненавижу js

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy