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

» Вопросы по программированию на C/С++

Автор: Zyava
Дата сообщения: 02.03.2007 21:27
Qraizer
veronica b


Господа, эк вас куда понесло, так и до оффтопа недалеко . Чувствую, все равно каждый из вас останется при своем мнении (как я в отношении pintf и cout )
Автор: Lyrik
Дата сообщения: 02.03.2007 22:20

2Qraizer

Цитата:
В C++ и так хватает факторов, способствующих этому отбору, и кто его не проходит, тот так и остаётся C-программером.

Спорно... Получается, что большая часть хакеров и опен-сорс кодеров - не прошли "отбор". С++ - для "ленивых", там все (ну или почти все) контролирует компилер, а в С - прогер, а если ты не можешь чего-то предусмотреть - это проблемы прогрера, но не языка, имхо.
С++ - язык для ооочень больших проектов, где оптимальность ставится на второй план, а С - язык для написания 99% системных вещей, где оптимальность и быстродействие ставится на первый уровень.
Автор: veronica b
Дата сообщения: 03.03.2007 13:38
Zyava
Lyrik
Тема нашей "ветки" называется Вопросы по программированию на С++ . Программированию на Си входит составной частьюв это тему!

Автор: Qraizer
Дата сообщения: 03.03.2007 14:28
Zyava
Сравнительный анализ с другими языками тоже допускается. Впрочем, тут уже конечно сложнее не скатиться в offtop, но мы постараемся. Я, в общем-то, и не собирался переубеждать, мне просто не понравился упор на C-стиль форматирования как более лучший.
veronica b
Цитата:
А что такое эта "бразильская" система обучения?
Да был такой выпуск Ералаша . Принцип простой - либо научишься, либо у тебя нет выбора.
Цитата:
А какой язык программирования высокого уровня был первым в истории?
Не помню, но попробую найти о нём что-нибудь. Помню, что его автором был немец, придумал он его во время войны, и хоть и синтаксис его был непривычен, но по характеристикам это был ЯВУ. По понятным причинам он так и не был реализован в натуре.
Lyrik
Ну, по-первых, я нигде не сказал, что оставшись С-программерами, они при этом обязательно проигрывают в классности C++-программерам. Если кто-то не осилит Ассебмлер, это тоже не значит, что он плохой программер.
Во-вторых, если бы ты не заключил "ленивых" в кавычки, я бы обидился. Основной принцип комфортного (ИМХО) программирования, это когда механическая работа автоматизируется, а тебе остаётся только творческая составляющая. С++ этому критерию соответствует не в полной мере (причины этого в первую очередь исторические - обязательная совместимость с С на уровне исходников, например), но значительно полнее, чем С. И это уже не ИМХО, а факт. Грамотное использование его возможностей - вот это я и назвал "отбором". Осилишь - ты C++-программер, нет - ты C-программер, использующий С++. По стилю исходников часто видно, кто кем является. И ещё раз отмечаю, что к профессиональной классности этот фактор не относится.
В-третьих, последний абзац, извини, просто не в тему. Я его оспариваю целиком. Это распространённое заблуждение. Спорить на эту тему я не намерен, т.к. боюсь получится религиозная война. Проще поискать материалы и почитать. Скажу только, что на плюсах я в своё время писал классы IRQ и DMA. Под DOS ещё, конечно, но и в Win16 тоже работало - испытано лично мною написанным проигрывателем VOC-файлов на SoundBlaster-е, и коллегами по работе в real-time системе, где они юзали эти классы для работы с собственной ISA-железякой. И прекрасно всё работало, причём написано было без капли ассемблера. А вот в реализации паттерна "шаблоны выражений" (именно паттерна, а не вообще "шаблонов" в терминах С++) С++ вообще ещё никто не переплюнул. Пожалуй, сравниться сможет только ассемблерная реализация с самомодифицирующимся кодом, но здесь возможно у меня неполная информация.

Добавлено:
veronica b
Ура, нашёл. Кстати, я был неправ. Он-таки был реализован в натуре, но аж в 2000-м году. Через пять лет после смерти автора.
Автор: Kamir
Дата сообщения: 03.03.2007 15:53
veronica b

Цитата:
какой язык учат - С или С++?

C++. BDS2006.
Qraizer, спасибо за пример.

Цитата:
Я бы написал иначе

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

Привожу пример на Delphi. Написал за минуту. Считаю это правильный код на Delphi (может ошибаюсь). => как на с++ этоже будет выглядеть?

Цитата:

program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
n: array [1..5] of real;
i: byte=1;
begin
WriteLn('Введите пять вещественных чисел');
while i<6 do
try
Read(n[i]);
inc(i);
except
on EInOutError do
writeln('Ошибка ввода. Попробуйте ввести вещественное число еще раз');
end;
end.
Автор: veronica b
Дата сообщения: 03.03.2007 16:27
Qraizer

Цитата:
Не помню, но попробую найти о нём что-нибудь. Помню, что его автором был немец, придумал он его во время войны, и хоть и синтаксис его был непривычен, но по характеристикам это был ЯВУ. По понятным причинам он так и не был реализован в натуре.

Если вы имеете в виду Цузе, а в то время других немцев не было, которые занимались бы тем, что сейчас называют выч. техникой, то ЭВМ он и не изоьрел и, нем более, не построил. Просто физически один человек не мог построить ЭВМ. Есть порог сложности, а минимальная система, которую с большим натягом можнр назвать ЭВМ будет требовать 120 000 компонентов. Из них где то 6 000 дорогих в то время радиоламп. Только богатые американские универтисеты могли себе позволить пытаться строить ЭВМ. Я понимаю, сейчас в России многие в своей ненависти к США готовы признать, что ЭВМ сделали немцы, а не навистные американцы. Первой современной ЭВМ была ИБМ 704 и первый ЯВУ был и есть Фортран.
Автор: Qraizer
Дата сообщения: 03.03.2007 19:13
veronica b
Однако ссылочку-то я привёл, или это не агрумент?? Причём тут изобретение и постоение ЭВМ, если вопрос был о первом ЯВУ? И 49 страниц программ, написанных на нём, достаточное количество для подтверждения его жизнеспособности. Замечу также, что вообще первым языком был язык программирования аналитической машины Бебиджа. Но к ЯВУ его никто не относит.
Kamir
Вот, пожалуйста.
Код: cin.ignore(numeric_limits<streamsize>::max(), '\n');
Автор: rain87
Дата сообщения: 03.03.2007 19:26

Цитата:
А что такое эта "бразильская" система обучения?  
чёрт, вспомнил это когда чувака на ворота ставили перед витриной магазина
Автор: veronica b
Дата сообщения: 03.03.2007 20:35
Qraizer
Я взял книгу Д.Кнута "Искуство программирования", согласитесь весьма авторитетный источник в мире компьютеров. Там есть короткая заметка о К.Цузе как об изобретателе плаваюшей точки, которую он называл "полулогарифмической шкалой". О нем как о авторе первого ЯВУ там и не вспоминается.
Вот цитата из вашей ссылки:

Цитата:
Первый компилятор для языка Планкалкюль был создан в Свободном университете города Берлин лишь в 2000 году, через пять лет после смерти Конрада Цузе.

Как можно говорить о языке программирования, для которого не было компилятора. Поэтому, наверное в истории первым ЯВУ останется Фортран, компилятор с которого был реализован на сеийной машине ИБМ 704 в 1954 году.
Назвать К.Цузе автором первого ЯВУ также не верно, как и Леонардо да Винчи назвать изобретателем вертолета и субмарины.

rain87

Цитата:
чёрт, вспомнил это когда чувака на ворота ставили перед витриной магазина

Весьма дорогой способ обучения. Наверное поэтому бразильцы давно не были чемпионами!
Автор: Qraizer
Дата сообщения: 05.03.2007 13:20
veronica b
По-твоему получается, что теоретические науки и не науки вовсе, и теоретические изыскания не имеют веса, пока они не подкреплены практикой? Тогда Энштейн тоже нифига не учёный. Извини, но ты не прав.
Автор: veronica b
Дата сообщения: 05.03.2007 16:21
Qraizer

Цитата:
По-твоему получается, что теоретические науки и не науки вовсе, и теоретические изыскания не имеют веса, пока они не подкреплены практикой? Тогда Энштейн тоже нифига не учёный. Извини, но ты не прав.

Нет, конечно, по моему так не получается. Я хорошо помню фразу академика Крылова - "Нет ниего более практичнее хорошей теории"! Если бы СТО и ОТО не потвердились практикой, то давно бы не помнили кто такой А. Эйнштейн.
Мы говорим о такой практической, при всей своей теоретичностичности, как компьютеры и конкретно о программировании. В трехтомнике Д.Кнута "Искуство программирования", который является весьма авторитетным источником информации в области программирования, К.Цузе не вспоминактся как автор первого в мире ЯВУ. Если бы он в 30хх годах эмигрировал в США, то я согласен, что его вклад и влияние в CS был намного был бы больше.

Автор: Qraizer
Дата сообщения: 06.03.2007 14:30
Уже пахнет оффтопом. Закругляемся. Напоследок скажу что с
Цитата:
Назвать К.Цузе автором первого ЯВУ также не верно, как и Леонардо да Винчи назвать изобретателем вертолета и субмарины.
соглашусь по полной прграмме, если "не верно" заменить на "верно". Леонардо да Винчи вполне изобретатель и того и другого, и это в общем-то не оспаривается.
Автор: Kamir
Дата сообщения: 06.03.2007 21:36
Qraizer

Цитата:
Она и у тебя неправильная. Хотя бы по двум причинам - ты не чистишь введёный поток от оставшихся там левых символов и при ошибке всё равно переходишь к следующему числу.

Это фишка С++ без которой прога написанная на нем не будет работать, а в делфи пофигу). inc(i) не срабатывает при возникновении исключительной ситуации => мы не переходим к следующему числу.

Чем плох такой вариант?

Цитата:
cin.exceptions(std::ios::failbit | std::ios::badbit);
while(i<5)
try
{
    std::cin >> n[i];
    i++;
}
catch(std::ios::failure&)
{
cout << "Введите действительное число." << std::endl;
cin.clear(); // очистить состояние ошибки
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // пропустить до конца строки
}


Добавлено:
Вот ссылка хорошая.
http://c-books.info/books/load.php?ty=c
Книг много.
Какую скачать впервую очередь?
Автор: Zyava
Дата сообщения: 07.03.2007 00:32
Kamir

Почитай классиков:
"Харви Дейтел, Пол Дейтел. Как программировать на С++"
или
"Герберт Шилдт. С++. Руководство для начинающих, 2-е изд."
фундаментальные книги можно сказать Страуструпа не советую, как-то он загадочно пишет имхо...
Автор: AnahrimedA
Дата сообщения: 07.03.2007 04:58
Камрады, подскажите где я туплю, мне надо получить ид терминальной сессии некоторого процесса, платформа w2003 sp2, копилятор VC++ 6, код следующий


Код:
// здесь беру все мыслимые привелегии
if(!EnablePriv()) return;

DWORD dwPID = 5976; // пид нужного мне процесса
    
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwPID);
if(hProcess == INVALID_HANDLE_VALUE){
DisplayErrorText(GetLastError(),TEXT("OnBtnRun::OpenProcess"));
return;
}

HANDLE hToken;
if(!OpenProcessToken(hProcess, TOKEN_QUERY, &hToken)){
DisplayErrorText(GetLastError(),TEXT("OnBtnRun::OpenProcessToken"));
return;
}

// !!! после предыдущей функции возникает ошибка отказано в доступе, в чем дело?
// так же если процесс мой, то код отрабатывает без проблем, но процесс запущен от юзера,
// а я нахожусь в сессии разумеется с правами Администратор

DWORD dwTokenInfoSize = 0;
DWORD dwTerminalSessionId = 0;
if(!GetTokenInformation(hToken,TokenSessionId,&dwTerminalSessionId,sizeof(DWORD),&dwTokenInfoSize)){
DisplayErrorText(GetLastError(),TEXT("OnBtnRun::GetTokenInformation"));
return;
}
m_dwSessionId = dwTerminalSessionId;
UpdateData(FALSE);
Автор: veronica b
Дата сообщения: 07.03.2007 08:21
Qraizer

Цитата:
соглашусь по полной прграмме, если "не верно" заменить на "верно". Леонардо да Винчи вполне изобретатель и того и другого, и это в общем-то не оспаривается.

Если так, то я не спорю, так как все модели Леонардо да Винчи не рабочии. Если так получилось, что вы утверждаете, что К.Цузе создал не рабочий ЯВУ, то я и не спорю.
Автор: TeXpert
Дата сообщения: 07.03.2007 09:07
Zyava

Цитата:
"Герберт Шилдт. С++. Руководство для начинающих, 2-е изд."

Это -- классик? По-моему, начинающим как раз Липпман в самый раз. Правда, книги там нет, но существует в виде несканированного, нормального pdf.

Добавлено:
AnahrimedA
Тебе в топик по WinAPI.
Автор: Zyava
Дата сообщения: 07.03.2007 10:20
TeXpert
А кто же тогда Шилдт? Я читал его книги еще 80-х годов по С - очень даже интересно читать, имхо его книги наиболее полные, и в то же время написаны простым языком. Кстати Kamir не совсем начинающий, достаточно взглянуть на интересующие его вопросы - думаю Шилдт будет в самый раз (или Дейтел и Дейтел, но у них наверно больше справочник, чем книга по которой можно учиться)

Автор: TeXpert
Дата сообщения: 07.03.2007 11:51
Zyava
Не знаю, на мой взгляд, это как изучать математические пакеты по "книгам" Дьяконова. Чувак в своё время вроде толковые книги писал по программируемым калькуляторам, а вот новые его книги -- полнейшая туфта.
Автор: Qraizer
Дата сообщения: 07.03.2007 14:18
veronica b
Ну ладно, будем оффтопить дальше, пока модератор не отридонлит.
Цитата:
Если так, то я не спорю, так как все модели Леонардо да Винчи не рабочии.
Нерабочесть моделей объясняется отсутствием необходимых технологий в тот момент, а отнюдь не ошибками проектирования. Так что аргумент не принимается.
Цитата:
Если так получилось, что вы утверждаете, что К.Цузе создал не рабочий ЯВУ, то я и не спорю.
И не надо передёргивать, я такого не утверждал, а если посмотреть немного выше, то как раз наоборот.

P.S. Если у Вас есть желание поспорить с документальными фактами и мениями историков, боюсь, Вы не найдёте собеседников. Пока что вижу только нежелание признать правоту энциклопедических статей.
Автор: Zyava
Дата сообщения: 07.03.2007 18:11
TeXpert
Не знал что он стал хуже писать, судил еще по старым книгам, надо будет что-нибудь поновее его почитать...
Автор: veronica b
Дата сообщения: 08.03.2007 08:34
Qraizer

Цитата:
И не надо передёргивать, я такого не утверждал, а если посмотреть немного выше, то как раз наоборот.

Я специально прочитал статью Рауля Рохаса, профессора Берлинского университета, факультет математики и мнформатики, "Архитектура вычислительных машин Конрада Цузе", который очень доказывал, что Германия - родина слонов, но даже он не утверждает, что первый ЯВУ изобретен в Германии.

Автор: veronica b
Дата сообщения: 09.03.2007 13:23
Qraizer, вот у меня ссылка на книгу "The First Computers - History & Architectures"
http://rapidshare.de/files/22591914/Rojas_-_The_First_Computers_-_History_and_Architectures__MIT_Press_2000_.pdf
Размер -12.62 MB.Я её не читал ещё и поэтому не знаю, что там пишут. Я думаю, что она многим будет интерестна.

Автор: NNS
Дата сообщения: 10.03.2007 16:27
Очень нужна ваша помощь! задача - считать данные из базы данных Access в массив.
В Базе данных 1 таблица с 2 столбцами. Я делаю так:

Код:
double* rez=new double[7];
rez=DbGG();
class CIllnesses : public CRecordset
{
public:

CIllnesses(CDatabase *pDatabase = NULL) :
CRecordset(pDatabase) { m_nFields = 2; };

CString m_Illnesses;
double m_Probability;

void DoFieldExchange(CFieldExchange *pFX);
};
void CIllnesses::DoFieldExchange(CFieldExchange *pFX)
{
pFX->SetFieldType(CFieldExchange::outputColumn);
    RFX_Text(pFX, "Illnesses", m_Illnesses, 50);
    RFX_Double(pFX, "Probability", m_Probability);
};
double* CDlg::DbGG()
{
CDatabase Db;
    SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver(*.mdb,*.accdb)",
        "DSN=my\0DBQ=C:\my.accdb");
        
Db.OpenEx("UID=sa;PWD=;DSN=my",CDatabase::noOdbcDialog);
    CIllnesses Ils(&Db);
    Ils.Open(CRecordset::dynaset, "tIllnesses");
    double x[7];
    CDBVariant varValue;
    for (int i=0;i<7;i++){
        x[i]=Ils.m_Probability;
        Ils.MoveNext();
    }
    &CRecordset::Close;
    &CDatabase::Close;
    return x;
};
Автор: Zyava
Дата сообщения: 10.03.2007 23:22
По идее не помешало бы поставить перед циклом

Код:
Ils.Start();
Автор: NNS
Дата сообщения: 12.03.2007 20:41
Zyava
ээээ... а такого в VS 2005 не имеется...
Автор: distance
Дата сообщения: 13.03.2007 10:53
NNS
а в msdn заглянуть - не?
CRecordset::MoveFirst
ps. И что значит эта запись:
Цитата:

Код: &CRecordset::Close;
&CDatabase::Close;
Автор: NNS
Дата сообщения: 13.03.2007 18:50
distance
Пробовал я так - не получается...

Цитата:
ps. И что значит эта запись

Она, по идее, должна закрывать, открытую базу...
Автор: distance
Дата сообщения: 13.03.2007 18:57
NNS
ну, бегло посмотрео код, я вижу, что массив заполняется в цике в этой строке из переменной m_Probability которая в данный момент имеет неинициализированное значение. функцию DoFieldExchang где с ней происходит какая-то работа никто не вызывает... Я не знаю как именно сделана связь переменной с полем в БД в DAO, ибо ввиду мертвости последнего никогда с ним не работал, но наверное стоит покопать в этом направлении.

Цитата:
Она, по идее, должна закрывать, открытую базу...
... но в реальности этого не происходит, ввиду отсутствия вызова функции.
Автор: NNS
Дата сообщения: 13.03.2007 19:13
distance

Цитата:
ибо ввиду мертвости последнего никогда с ним не работал

А что посоветуешь использовать? Не мертвое

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


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