Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Обучение и начало програмирования на С++

Автор: Rvnikita
Дата сообщения: 21.06.2005 13:31
MFANiRAGE
Не хочу идти поперек мнения других, но помоему начинать учить С++ с пакаля, гиблое дело.
Уж извините.
Так и останешься на паскале, будешь говорить что в сях не правильно все както...
И в итоге - Дельфи.
УВЫ!

Лично я прошел другой путь, первый язык - С
После него уе С++.
Конечно С++ сразу тяжело, но после С и с нормальной книгой все как по маслу.
В подтверждение правильности своих суждений хотелось бы сказать, что учусь на ИУ8 в МГТУ им. Баумана.
И на факах, где программирование действительно нужно начнают сразу с С, в отличии от другх, где идет сначало паскаль, а потом все ходят и ноют, что С и С++ ацтой, верните нам паскаль, там ЛЕГЧЕ!
Автор: sk Asgard
Дата сообщения: 21.06.2005 14:05

Цитата:
Так и останешься на паскале, будешь говорить что в сях не правильно все както...
И в итоге - Дельфи.
УВЫ!


согласен. У меня в универе многие преподы упорно навязывают дельфю именно потому, что её стиль и синтаксис им кажется гораздо более привычным и правильным, нежели сишный, т.к. начинали они с паскаля и слезают с него с большой неохотой. Я сам начинал с perl'а, синтаксис которого очень похож на C. Поэтому мне кажутся совершенно чуждыми паскаль и дельфи, которых я до сих пор не знаю и не стремлюсь познать.
Автор: pafhunter
Дата сообщения: 21.06.2005 15:11

Цитата:
И на факах, где программирование действительно нужно начнают сразу с С, в отличии от другх, где идет сначало паскаль, а потом все ходят и ноют, что С и С++ ацтой, верните нам паскаль, там ЛЕГЧЕ!
Полностью согласен, у нас в академии также.
Сам я начинал с бейсика еще в школе, и это дало мне хороший старт, так что в С въехал без проблем, главное - наличие хорошей литературы и желание. А Паскаль не знаю до сих пор... И не жалею...
Автор: Ambal
Дата сообщения: 21.06.2005 17:08

Цитата:
У меня в универе многие преподы упорно навязывают дельфю именно потому, что её стиль и синтаксис им кажется гораздо более привычным и правильным

Преподы они ленивые. (да и вообще большинство людей)
Если он знает одну тему, зачем ему изучать другую? Себе дешевле, и побарабану ему что счас востребовано.
Автор: Seregakruto
Дата сообщения: 21.06.2005 17:48
[q][/q]
подскажите где можно классных ссылок на книги по Си++ понабирать и по паскалю, а то универ впереди, страшно! заранее благодарен. пишите пожалуйста на E-mail serega007@en.dn.ua
Автор: sk Asgard
Дата сообщения: 21.06.2005 17:57
Seregakruto
дык тема есть специальная по ebook'ам на фаоруме, там и спрашивай
Автор: Stroodder
Дата сообщения: 22.06.2005 06:21
Seregakruto
Полистай этот топик назад, тут довольно неплохие ссылочки были в начале АФАЙР.
Автор: DeviL
Дата сообщения: 22.06.2005 11:11
Народ сори за оффтоп можно маленький вопрос - какие версии Borland и Visual C++ сейчас последние и какие стоит ставить?
Автор: DeADMoHAX
Дата сообщения: 27.06.2005 14:30

Цитата:
од сори за оффтоп можно маленький вопрос - какие версии Borland и Visual C++ сейчас последние и какие стоит ставить?

Ну Visual C++ в составе Visual Studio 2005
http://www.microsoft.com/emea/msdn/betaexperience/ruru/
Автор: sket4
Дата сообщения: 03.07.2005 19:39
Rvnikita
Бауманку уважаю сильно, но я гуманитарий и, к тому же самоучка, учил сначала паскаль, но очень быстро, буквально за 2 недели прочитал несколько книг и кодил, делал все это исключительно для подготовки к изучению спп, так что тут многое зависит от желания и стремления.
Автор: OtD
Дата сообщения: 04.07.2005 21:31
Rvnikita
Полностью поддерживаю! С++ такой язык, что можно начинать программировать на нём, не зная его полностью, а в процессе, чем больше постигаешь, тем больше появляется красноречие. На сегодняшний день, это один из самых документированых и востребованых языков.
А начинать обучение надо с самого начала, сперва выучить самый древний язык программирования Ассемблер, в процессе изучения его, прийдёт понимание работы самой ЭВМ, ведь отладку всё равно делать надо. И какой бы гениальный небыл код на С++, он всё равно превратится в ассемблерные команды .
Потом, взятся за С++, но не вдаваться в ООП, а понять принцыпы процедурного программирования и набивать руку, дёргая и комбинируя разные функции из API.
Затем, научится создавать свои типы данных (красивые структуры) и начинать мыслить образно, объектами.
После, Вашим красивым структурам добавьте функциональности (начисление при объявлении, разрушение при закрытии, обмен между объектами и т.п.).
И когда Вы увидете, что Ваша задумка стала большой, а в голове каша, начинайте разделять и властвовать над своим кодом, то есть, любое, более-менее, понятие, организуйте в класс, и не жалейте время на его аккуратное и красивое оформление. Рассматривайте класс как мини-программу, и по возможности, старайтесь делать его независимым от других классов, с целью его использования в других проектах, и в большом проекте, потом, сможете создать наследование, полиморфизм и прочее.
А платформа и API пусть Вас сильно не беспокоит, язык первичен!
Автор: OdesitVadim
Дата сообщения: 05.07.2005 10:55
OtD

Цитата:
а понять принцыпы процедурного программирования и набивать руку, дёргая и комбинируя разные функции из API

Ага. Читаю книгу по С++, цитата

Цитата:

Для создания потоков применяется API функция CreateThread, но не нужео её использовать. Вместо неё используйте _BeginThread. Только таким образом вы нормально инициализируете библиотеки.

Delphi не запрещает мне использовать API свободно. C - запрещает, заставляет использовать обёртки. Там далее по тесту идёт объяснение, что если сильно хочеться, то можно, но вам прийдётся переписать много-много системных библиотек и плюс к этому никто не гарантирует, что оно правильно инициализируется и будет работать.
pafhunter

Цитата:
Сам я начинал с бейсика еще в школе, и это дало мне хороший старт, так что в С въехал без проблем, главное - наличие хорошей литературы и желание. А Паскаль не знаю до сих пор... И не жалею...

Мне кажеться, что человек, не владёющий более-менее обома языками не может обговаривать какой язык лучше.
Автор: OtD
Дата сообщения: 09.07.2005 06:46
OdesitVadim

Цитата:
Мне кажеться, что человек, не владёющий более-менее обома языками не может обговаривать какой язык лучше.

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

Код:
if (x) y = z;
else z = y;
// и
x ? y = z : z = y;
Автор: mihas83
Дата сообщения: 09.07.2005 12:30
OtD

Цитата:
А начинать обучение надо с самого начала, сперва выучить самый древний язык программирования Ассемблер, в процессе изучения его, прийдёт понимание работы самой ЭВМ, ведь отладку всё равно делать надо. И какой бы гениальный небыл код на С++, он всё равно превратится в ассемблерные команды

Вот здесь не согласен.
Начинающему превращение в ассемблерные команды совсем забьет мозги...
И на первых пор совсем не актуален для него Ассемблер, как и что там в стеке происходит...

Цитата:
А платформа и API пусть Вас сильно не беспокоит, язык первичен!

Здесь тоже не всё так однозначно...
Автор: mr_eoi
Дата сообщения: 09.07.2005 17:09
OtD
07:46 09-07-2005
Цитата:
Например, в С++ из двух, ниже следующих, выражений:
Код:
if (x) y = z;
else z = y;
// и
x ? y = z : z = y;
последнее более привлекательней для меня.

Типичное мнение начинающего программиста (сам когда-то, по-первости, страдал подобным). Код компилятором будет сгенерён один и тот же, а читабельность программы страдает изрядно. Особенно если забывают писать комментарии. Попробуй через годик-другой разберись.
Автор: mihas83
Дата сообщения: 09.07.2005 20:12
mr_eoi
Нет, в выражении
x ? y = z : z = y;
применен стандартный условный оператор...
Автор: wargoblin
Дата сообщения: 09.07.2005 20:47

Цитата:
ссемблерные команды совсем забьет мозги...

и отобьёт желание учится напрочь...
Автор: OtD
Дата сообщения: 11.07.2005 17:12
mr_eoi

Цитата:
Типичное мнение начинающего программиста

Это ты к чему? Походу ты не понял суть сказаного.

На счёт ассемблера.
Что вперёд изучать, вопрос реторический. Это примерно, с чего постигать мир, с атомного ядра или со структуры ДНК. По мне так с ядра.
Автор: vitls1
Дата сообщения: 11.07.2005 21:09
OdesitVadim
Какие такие обертки? Вроде реализация системных библиотек заточена как раз на использование в С. В принципе достаточно посмотреть на типы данных передающихся в качестве аргументов, чтобы сказать что это С, но никак не паскаль и не дельфи.
Автор: OdesitVadim
Дата сообщения: 14.07.2005 18:54
vitls1
Вот именно что для С. Для С++ начинаются сказки...
Автор: Dogmatek
Дата сообщения: 15.07.2005 01:12
Подскажите... как в Borland C++Builder 6 вписать в одну строку текст, переменную и еще раз текст.Желательно в компонент TListBox или TMemo?


получается только:
...
float x=y;

ListBox1->Items->Append("текст");
ListBox1->Items->Append(x);
ListBox1->Items->Append("текст");

только как это нужно сделать в одну строку?

Помогите, а то в справке ничего подобного найти не могу...
Заранее спасибо...
Автор: OdesitVadim
Дата сообщения: 15.07.2005 16:07
Если
Цитата:
float x

то на
Цитата:
ListBox1->Items->Append(x);
должен ругаться - несоответствие типов.
А выглядеть ответ на твой вопрос может так (например)

Код:
ListBox1->Items->Append("текст"+FloatToStr(x)+"текст");
Автор: TheChampion
Дата сообщения: 15.07.2005 17:40
OdesitVadim

Цитата:

ListBox1->Items->Append("текст"+FloatToStr(x)+"текст");

Это не код! Не работает...

Dogmatek
В одну строку это выглядит так:

Код:
ListBox1->Items->Append(String("текст") + String(x) + String("текст"));
Автор: OdesitVadim
Дата сообщения: 15.07.2005 18:11
TheChampion
точно знаю, что если бы было ListBox1->Items->Add, то точно работало. Писал не один раз. Может это в VC не работает. Хотя С дивный язык. И после этого Вы утверждаете, что в С нужно меньше букв писать (скобку вместо begin, и т. д.)? Или просто доопределим оператор и всё пучком?
Автор: TheChampion
Дата сообщения: 15.07.2005 18:44
OdesitVadim
Ясно, что меньше. Сравните геморрой вызова StrToX и простой конструктор String(...)

Вы не путаете паскаль с C++? Ну нет в C++ operator+(const char*, String)!
Автор: OdesitVadim
Дата сообщения: 15.07.2005 20:07
TheChampion
Написать С++ - это ничего не написать.
Нужно указать конкретно реализацию. Не спорю, возможно в стандарте [C99] и нет такого. Но человек же написал
Цитата:
как в Borland C++Builder 6

я писал в этой среде. Работало.

Цитата:
Сравните геморрой вызова StrToX и простой конструктор String(...)

Это не геморой, это чёткость изложения мыслей. Хотя никто не мешает мне определить функцию, которая будет делать подобное (тоесть переопределить её для разных параметров)
Я много видел кода на С (в основном Builder), но такой конструкции не встричал. Дивно...
Автор: TheChampion
Дата сообщения: 16.07.2005 07:27
OdesitVadim
Пардон, эта конструкция действительно работает. Просто конструктор не описан как explicit, потому и работает...


Цитата:
Это не геморой, это чёткость изложения мыслей.

Где тут четкость? Эти функции оставлены сугубо потому, что в паскале нет полноценных конструкторов, если вы посмотрите описание String, то увидите список возможных параметров конструктора. Туда входят и const char*, и double и еще много чего. А если вы посмотрите еще более внимательно, то обнаружите функции-члены ToInt(), ToDouble(), c_str(). По моему мнению, вызов

Код: s.ToInt()
Автор: vserd
Дата сообщения: 16.07.2005 11:25
Всем доброго здравия.
Подскажите пожалуйста есть ли в VC++ 6.0 аналог делфийского Format с поддержкой номеров переменных (%s:1)
пример на паскале
Format('Test string %s:2 , word %s:1, [' passed', 'yes']);
результат будет
'Test string yes , word passed'

а что можно вставить на C++?

printf и модификации делает примерно тоже самое, но на жестко фиксированных позициях. Т.е. если встретился %s в первый раз, значит буте заменен первым аргументом.
'Test string passed, word yes'

Столкнулся тут с переводом фразы на другой язык, и оказалось что нужно поменять местами параметры для правильного перевода. :(((


TheChampion

Цитата:
Где тут четкость? Эти функции оставлены сугубо потому, что в паскале нет полноценных конструкторов, если вы посмотрите описание String, то увидите список возможных параметров конструктора. Туда входят и const char*, и double и еще много чего. А если вы посмотрите еще более внимательно, то обнаружите функции-члены ToInt(), ToDouble(), c_str().

давайте начнем с того что в паскале String это элементарный/базовый тип данных на равне с Integer, Byte Word и др, а в С++ string это шаблонный класс (String это структура используемая для описания версии файла). А раз string это класс, тогда мы можем туда запихать кучу методов и бог знает какого сложного кода, которые будут выполнять нужные преобразования "на автомате".
Естественно что для элеметарного типа нужны функции преобразования в другие типы.

И сравнивать элементарный тип и класс мягко говоря не корректно.

Цитата:

По моему мнению, вызов

Код:s.ToInt()

гораздо короче и более в стиле ООП, нежели

Код:StrToInt(s)


Тогда давайте будем писать и добиваться внесения в стандарт такого синтаксиса:
int testInt;
testInt.ToStr()
и будем говорить это в более объектно ориентированном стиле чем использование _itoa и аналогичных функций.

Хотя конструкция s.ToInt() действительно выглядит более симпатично :))) но мы говорим о совершенно разных реализациях. Если кто-то напишет на Паскале класс type String =class() и введет его в место привычного String тогда и будем говорить о более или менее стилях ООП при записи исходного кода.
Автор: OdesitVadim
Дата сообщения: 18.07.2005 12:08
vserd

Цитата:
type String =class()

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

По поводу твоего вопроса - написать свою функцию format, которая будет подставлять параметры.
Автор: Xarde
Дата сообщения: 18.07.2005 14:59
vserd

Цитата:
Подскажите пожалуйста есть ли в VC++ 6.0 аналог делфийского Format с поддержкой номеров переменных (%s:1)
пример на паскале
Format('Test string %s:2 , word %s:1, [' passed', 'yes']);
результат будет
'Test string yes , word passed'

Именно _такого_ не встречал, но обычно вполне достаточно использовать функцию printf - то же самое, но без возможности выбора переменной по номеру. Сомневаюсь, что есть сложности с расположением переменных в правильной последовательности.

mr_eoi

Цитата:
Типичное мнение начинающего программиста (сам когда-то, по-первости, страдал подобным). Код компилятором будет сгенерён один и тот же, а читабельность программы страдает изрядно. Особенно если забывают писать комментарии. Попробуй через годик-другой разберись.

Пишу на C++ уже довольно давно и не замечал, чтобы операто ?= затруднял понимание кода. Имхо, наоборот - меньше строк и больше чистого кода.

По поводу спора, что лучше - Delphi или Builder могу сказать, что они различаются достаточно, чтобы спор не имел особого смысла. Есть задачи, которые проще сделать на одном, есть те, что проще реализуются на другом. И при всем уважении к собеседникам - Delphi компилирует быстрее и обычно более компактны код. Видимо, потому, что часть (если не весь) код C++ на Builder транслируется в машинные команды через Pascal.

P.S. Сам я предпочитаю С++, но иногда и Delphi не брезгую. Правда, на Delphi иногда возникают вопросы типа "блин, ну ожно же было проще все это описать..."

Страницы: 12345678910111213141516171819202122

Предыдущая тема: DELPHI. Счетчик ячеек со значенями, значений ячеек


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.