Первый язык

Модератор: Модераторы разделов

Аватара пользователя
dm_f
Сообщения: 290
Статус: Ы
ОС: fedora 14

Re: Первый язык

Сообщение dm_f »

edranovdenis писал(а):
02.05.2007 21:13
if(i == 0 && i != 1 && i != 2 && i != 3 && i != 4)


какое красивое условие :)
действительно, вдруг i равняется и нулю, и единице, и т.д.? :)

edranovdenis писал(а):
02.05.2007 21:13
а вы "for(int i=0;i<5;i++)

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

Re: Первый язык

Сообщение Liksys »

Хых :)

Код: Выделить всё

#include <iostream>
int main()
{
   while ( true )
      int *i = new int;
   return 0;
}
Спасибо сказали:
Аватара пользователя
Xenon
Бывший модератор
Сообщения: 359
ОС: Debian

Re: Первый язык

Сообщение Xenon »

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

А по поводу коду - ацккая жесть :)) Я тут на днях не хуже видел
# include<iostream.h>
# include<conio.h>
int main()
{
int a;
cout <<"vvedite chislo ot 1 do 10: ";
cin>> a;
if (0>a||a>10) cout <<"nedopustimoe chislo";
else {
if (a==0,2,4,6,8,10) cout <<"vi vveli chetnoe chislo\n";
else cout <<"vi vveli ne chetnoe chislo";
}

getch();
return 0;

}
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: Первый язык

Сообщение eduard_pustobaev »

Liksys писал(а):
02.05.2007 21:24
Хых :)

Код: Выделить всё

#include <iostream>
int main()
{
   while ( true )
      int *i = new int;
   return 0;
}

Неинтересно как-то. Ну и что? Сожрёт усю память?
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Первый язык

Сообщение diesel »

dm_f писал(а):
02.05.2007 21:19
а что в этом сложного? мой мозг, изъеденный паскалем, въехал в эту конструкцию где-то за полминуты.

а теперь убери из мозга паскаль )))
Спасибо сказали:
Аватара пользователя
dm_f
Сообщения: 290
Статус: Ы
ОС: fedora 14

Re: Первый язык

Сообщение dm_f »

diesel писал(а):
02.05.2007 21:32
а теперь убери из мозга паскаль )))


думаю, мало чего изменится. у того, кто ниасилит цикл в c/c++, мало шансов осилить его в языках, считающихся более лёгкими.
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Первый язык

Сообщение Liksys »

Использовать conio.h в C++ вместе с iostream.h - это надо было что курить? :)
Да, кстати, заодно надо приучать к хорошему стилю програмирования, чтобы не выросло поколение быдлокодеров.

eduard_pustobaev писал(а):
02.05.2007 21:31
Неинтересно как-то. Ну и что? Сожрёт усю память?

Мну еще не попил яблочного соку :)
Спасибо сказали:
Аватара пользователя
Xenon
Бывший модератор
Сообщения: 359
ОС: Debian

Re: Первый язык

Сообщение Xenon »

conio.h - вполне осознано, ибо там есть getch() (getchar() не всегда правильно функционирует), а вот iostream.h действительно зря, нужно iostream (хотя на старых компилятор старые хедеры остались).
Меня вот эта строчка if (a==0,2,4,6,8,10) cout <<"vi vveli chetnoe chislo\n"; мощное условие :)
Спасибо сказали:
Аватара пользователя
Kipruss
Сообщения: 251
ОС: Kubuntu

Re: Первый язык

Сообщение Kipruss »

Рекомендую Python. Очень хорош для обучения. Учит "правильно" писать. Да и для реального программирования подойдёт - мощи хватает. А для разнообразия - Java. Сейчас востребованы Java-девелоперы. Ну, про C/C++ тут уже много сказано - это классика.
Mandrake > Mandriva > SuSE > Gentoo > openSUSE > ALT Linux > Kubuntu
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Первый язык

Сообщение diesel »

dm_f писал(а):
02.05.2007 21:36
думаю, мало чего изменится. у того, кто ниасилит цикл в c/c++, мало шансов осилить его в языках, считающихся более лёгкими.

скорее наоборот. у того кто осилит цикл в С скорее всего без проблем получится понять его же на других языках. только опять таки у того кто будет осиливать С в качестве первого языка шанс написать if(i==1 && ..... гораздо выше - попросту пропустить суть процесса променяв его на ненужные детали :-) хотя разумных способ показать это тому кто что-то таки да знает(или думает что знает) нет - это разве что учителя в школах с большим стажем хорошо понимают. :-)
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: Первый язык

Сообщение eduard_pustobaev »

diesel писал(а):
02.05.2007 21:48
у того кто осилит цикл в С скорее всего без проблем получится понять его же на других языках.

Ну не знаю. После Pascal цикл в C ничем сложным не казался. Бок в том, что C мы и не учили, а после паскаля сразу плюсы. Вот с пониманием ООП тогда таки были проблемы...
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Первый язык

Сообщение Liksys »

conio.h ужо устарел:

Код: Выделить всё

#include <iostream>
#include <conio.h>
int main()
{
        std::cout << "Hello, World!\n";
        return 0;
}
[liksys@max ~]$ g++ -o test test.cpp
test.cpp:2:19: error: conio.h: No such file or directory

Тем более, что conio.h - это ввод-вывод, который в нормальных версиях лучше реализован в stdio.h и еще лучше - в iostream.
Аффтару надо рассказать про std::cin.get();
Спасибо сказали:
Аватара пользователя
Xenon
Бывший модератор
Сообщения: 359
ОС: Debian

Re: Первый язык

Сообщение Xenon »

std::cin.get() ожидает '\n', а getch() - нет. Аналог этому - getchar(), но почему-то нередко в поток попадает мусор, который последний считает за ввод - почему, не знаю, но вот была такая хрень :)
А нет его, потому что ты в G++ собираешься ... в gcc должна она быть. Это же сишный хедер.
Ps. Туплю, getchar тоже ожидает
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Первый язык

Сообщение diesel »

eduard_pustobaev писал(а):
02.05.2007 21:53
Ну не знаю. После Pascal цикл в C ничем сложным не казался. Бок в том, что C мы и не учили, а после паскаля сразу плюсы. Вот с пониманием ООП тогда таки были проблемы...

не :) ты немного не туда меня понял :) когда ты знаешь что такое цикл - то как это пишется - просто формальность. И тут неважно где ты узнал что такое цикл на самом деле(мне даже С-шный вариант for'а кажется более понятным ). Вот только вокруг и в этом цикле будет куча всего странного, необычного, нового, неочевидного... что сам цикл рискует остаться без внимания, что в итоге приводит к невообразимой каше, без всякого ООП. ООП это вообще отдельная тема для разговора :)
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Первый язык

Сообщение Liksys »

Код: Выделить всё

#include <stdio.h>
#include <conio.h>
int main(void)
{
        printf("Hello, World!\n");
        return 0;
}
[liksys@max ~]$ gcc -o test test.c
test.c:2:19: error: conio.h: No such file or directory

:) Реализация C++ предполагает совместимость с кодом C, чтобы иметь возможность понимать все его либы. Заголовочники от С работают в С++.
А чтобы getchar() мусор не читал - есть специальный прием

Код: Выделить всё

getchar();
getchar();
, если программа интерактивна.
Ему же в принципе надо, чтобы не закрывалось окно после работы, это можно

Код: Выделить всё

std::cin.get();
std::cin.get();
сделать.
Спасибо сказали:
Аватара пользователя
Xenon
Бывший модератор
Сообщения: 359
ОС: Debian

Re: Первый язык

Сообщение Xenon »

Liksys, я говорю не конкретный пример. Если мне нужно перед закрытием окна, то я могу std::cin.sync(); std::cin.get() использовать, а вот если нужно интерактивная работа, мол нажал номерок и поехало - никак без getch(). Жалко что его выкинули из g** :)
Допустим даже в бреде типа:

Код: Выделить всё

#include <iostream>
#include <stdio.h>

int main(int argc, char* argv[])
{
    char choice = '\';
    int y = 0;
    while (choice != 'q' && choice != 'Q')
    {
        for (int i = 0; i < y; ++i) std::cout << std::endl;
        std::cout << "  ***\n  ***\n  ***\n*** ***\n*** ***\n*** ***";
        choice = _getch();
        switch (choice)
        {
        case 'd': ++y;
            break;
        case 'y':
            if (--y < 0) y = 0;
            break;
        case 'q':
            break;
        }
        system("cls");
    }
    std::cin.get();
    return 0;
}

Красивее не знаю как сделать :) чтобы "кубики" эти катались вверх-вниз. Разве что через kbhit()
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Первый язык

Сообщение Uncle_Theodore »

Други мои, не зацикливайтесь на цикле.
Вы мне лучше скажите, в конструкции

Код: Выделить всё

for(int i=0;i<5;i++)
  if(i==1) do this
  if(i==2) do that
  if(i==3) do something else
  if(i==4) do yet another thing

цикл вообще зачем?? :)
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: Первый язык

Сообщение v04bvs »

Какие то страшные вещи вы все говорите. Какой С++? Вы первое сообщение перечитайте. Человек хочет научиться программировать а не выучить С++.
Ему надо читать про структуры данных, про алгоритмы, а не про выдумки Страуструпа :)
С++ вообще жуткий язык, а для начинающих - верный путь отбить охоту программировать.
Лисп, только лисп, без этого дурацкого синтаксического мусора.
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Первый язык

Сообщение Liksys »

Код: Выделить всё

#import <io>

class MyClass :
   def __constructor__(self) :
      pass;
   def public static (string, int) getValues() :
      return ("Hello, World!\n", 5);

def (int) main(string argv[]) :
   string str;
   int digit;

   MyClass *my_class = new MyClass();
   (str, digit) = my_class->getValues();

   stdout << str << '\n' << digit << '\n';

   delete my_class;

   return 0;
Спасибо сказали:
Аватара пользователя
Xenon
Бывший модератор
Сообщения: 359
ОС: Debian

Re: Первый язык

Сообщение Xenon »

Извращенец :tongue:

Uncle_Theodore, как так ? Для порядку!

v04bvs, чем же он жуток? А учить голую теорию без практики новичку будет интереснее, чем набрав три строчки кода получить "Hello world" ? :)
Спасибо сказали:
edranovdenis
Сообщения: 135
ОС: main mdv2006

Re: Первый язык

Сообщение edranovdenis »

оффтоп: liksys, xenon вы о чём или где?

или у вас мозги совсем паскалями прожжены....
вот зайдет новичёк почитать, а тут такое.
Живая мысль подобна реке бегущей с гор - будучи полноводной, не засохнет, но непременно впадет в океан.
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Первый язык

Сообщение Liksys »

Мне кажется, теорию обязательно надо подкреплять практикой. Если разжевать человеку про алгоритмы, нужно привести самый простой из них. Разжевал про операторы - написал hello. Мне просто есть с чем сравнивать, я не так давно школу закончил и еще помню, _как_ там учили. Учили так, как не надо. Сразу отбивается охота что-либо изучать.

[offtop]
Xenon писал(а):
02.05.2007 22:34
Извращенец :tongue:
Высокий уровень абстракции, встроенные типы данных - классы, имеют тучу готовых методов, множественные возвращаемые значения, списки, кортежи, указатели, ссылки.... ООП, паттерны... встроенные средства управления памятью... Да еще компилируемый :)
[offtop]
Спасибо сказали:
Аватара пользователя
Xenon
Бывший модератор
Сообщения: 359
ОС: Debian

Re: Первый язык

Сообщение Xenon »

Ну у меня как миниму нет io :) Но это не суть, просто код спортивный достаточно, хотя вполне логичен.

edranovdenis, Для тех кто в танке - мы все о С++ :)
Спасибо сказали:
edranovdenis
Сообщения: 135
ОС: main mdv2006

Re: Первый язык

Сообщение edranovdenis »

Вообще-то мы об:
Достаточно навязший в зубах вопрос: с чего начинать? Дело в том, что программированием профессионально заниматься я едва ли когда-нибудь буду. Только поступил в ВУЗ (экономическая специальность - предстоит много математики), заинтересовался программированием просто для развития мышления.
Живая мысль подобна реке бегущей с гор - будучи полноводной, не засохнет, но непременно впадет в океан.
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Первый язык

Сообщение Liksys »

edranovdenis писал(а):
02.05.2007 23:02
Вообще-то мы об:

Ну тогда тема исчерпана полностью, посколюку перемыли косточки всем популярным языкам :) Теперь челу останется только прочитать и выбрать.
Думаю, что можно немного и С++ обсудить чуть подробнее.
Спасибо сказали:
Аватара пользователя
Xenon
Бывший модератор
Сообщения: 359
ОС: Debian

Re: Первый язык

Сообщение Xenon »

На мой взгляд тогда нафиг ему C#, Java, да и .NET и QT - С++ в зубы и штудировать :) Потом затянет - сможет куда-то пойти дальше, а с Паскалем на Паскале и останешься - где еще паскаля подобный синтаксис в современных языках? :) Синтаксис, конечно, дело пары месяцев, но ...
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Первый язык

Сообщение Liksys »

Xenon писал(а):
02.05.2007 23:13
где еще паскаля подобный синтаксис в современных языках?
Что-то похожее хотя бы begin/end в Lua, но он тоже так себе язык.
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: Первый язык

Сообщение v04bvs »

Xenon писал(а):
02.05.2007 22:34
v04bvs, чем же он жуток? А учить голую теорию без практики новичку будет интереснее, чем набрав три строчки кода получить "Hello world" ? :)

Вот этот код я рожал дня 2. Это кстати не мой, я полностью до него так и не додумался. При том, что я С++ знаю года 3, программирую практически только на нём года полтора.

Код: Выделить всё

namespace et
{
  namespace util
  {
    namespace is_lshift_operator_overloaded_
    {
      struct tag
      {
      };

      struct any
      {
    template <class T>
    any(const T&);
      };

      tag operator<<(const any&, const any&);

      template <class T1, class T2>
      struct implementation
      {
    typedef char (&no)[1];
    typedef char (&yes)[2];

    static no check(tag);
    static yes check(...);

    static T1* t1;
    static T2* t2;

      public:
    enum { value = sizeof(check(*t1 << *t2)) == sizeof(yes) };
      };
    }

    template <class T1, class T2>
    struct is_lshift_operator_overloaded : is_lshift_operator_overloaded_::implementation<T1, T2>
    {
    };

  }
}

И этот язык предлагается учить первым? С++ это очень мощный язык, но это одновременно очень сложный язык.
Спасибо сказали:
Аватара пользователя
Skladnoy
Сообщения: 90
ОС: Debian

Re: Первый язык

Сообщение Skladnoy »

v04bvs
А что? Никто же не предлагает учить такой черной магии. А вообще вся эта конструкция производит впечатление довольно интересного хака. Я даже почти понял как это работает. Но это все таки хак и использование средств языка не по назначению (-: Что-то из этого должно вырасти
Спасибо сказали:
Аватара пользователя
Xenon
Бывший модератор
Сообщения: 359
ОС: Debian

Re: Первый язык

Сообщение Xenon »

Зачастую, если человек не может понять языка - это не проблема языка, а проблема программиста - причины совершенно разные: от кривизны рук, до простых каких-то предубеждений, но, конечно, не исключая простого непонимания (ну не кушается язык и все тут). Но это так - отступление.
По поводу тех конструкций, что ты тут понавертел - ну, во-первых, новичку не обязательно сразу кидаться в крайности - я могу привести какой-нибудь ужасно/страшно/жутко сложный код на Паскале и сказать - эй, хлопец, этот язык очень сложный :) Пример осуждения языка аналогичен твоему, только язык, в данном случае, другой. Да, соглашусь, есть рамки - asm естественно сложный, но я если рассматривать С++ и Паскаль - я бы не сказал, что оба этих языка слишком сильно отличаются по начальной сложности. Да, если копать глубоко, а еще и прикупив "Современное Проектирование" Александреску, то, конечно, С++ может показаться очень сложным. Но начинаем с малого, а потом растем. Сейчас много хороших книг, с помощью которых новичок спокойно встанет на ноги (это вам не Страуструп).
Спасибо сказали: