Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Помогите понять С++


Автор: Uchenik1989 2.2.2012, 19:58
доброго времени суток ... я начал С++ и некоторые вещи не могу понять вообще ... а именно циклы ... разобрал функции перескочивши циклы но пришлось вернуться ... не могу понять как работает :

Код
int main ()
{
int i;
int n;
cout<<"Введите число"<<endl;
cin>>n;
i=1;
while (i<=n)
{
cout<<i<<endl;
i++;
}
return 0;
}


Очень простая программа которая демонстрирует цикл ... где на консоль выводяться числа от 1 до n ... тоесть пользователь ввёл 100 и программа циклически начала выводить 1 2 3 4 5 6 и до 100 ... Но мне не понятно :

cout<<i<<endl;
i++;

сиаут выводит переменную i и как программа понимает что к ней надо добавить одиницу если на консоль уже должно вывести эту одиницу ... а программа с начала выводит полный цикл от и до ... но я же сказал  ---cout<<i<<endl-- что выведи одиницу а потом добавь ещё одиницу а как оно понимает  .... короче я уже сам запутался что хотел сказать ... но смысл в том что как всё это понимает компилятор ? тоесть он смотрит что это цикл где i не должен быть больше n дальше он видит сиаут ... выводит одиницу а потом плюсует ... не могу понять как выполняеться цикл ... тоесть как система понимает что надо добавлять одиницу ... А если я скажу что надо добавлять двойку ? оно будет работать ?

P.S. Читаю Шилдта но эти моменты мне вообще не понятны .... 
Помогите пожайлуста кто как может обьяснить ...   

Модератор: не забываем пользоваться кнопочкой "Код"

Автор: feodorv 2.2.2012, 20:33
Гм. Понять из этого "сумбура вместо музыки", что именно Вам не понятно, не возможно  smile 


Цитата(Uchenik1989 @  2.2.2012,  19:58 Найти цитируемый пост)
тоесть как система понимает что надо добавлять одиницу

Там у Вас написан такой маленький оператор:
Код

i++;

благодаря которому как раз и прибавляется единица к i. Полагаю, что Вы пропустили не только циклы)))


Цитата(Uchenik1989 @  2.2.2012,  19:58 Найти цитируемый пост)
А если я скажу что надо добавлять двойку ?

Если скажете так:
Код

i += 2;

или так:
Код

i = i + 2;

то, да, работать будет)))

Автор: bsa 3.2.2012, 10:43
Uchenik1989, для начала, научись уважать себя и других программистов - форматируй код. Пока он простой, еще можно разобраться, но когда станет сложней - повесишься.
Код
int main ()
{
    int i;
    int n;
    cout<<"Введите число"<<endl;
    cin>>n;
    i=1;
    while (i<=n)
    {
        cout<<i<<endl;
        i++;
    }
    return 0;
}

Итак, cout - это такой объект, у которого переопределен оператор << (аналогично cin, но для него переопределен оператор >>). Когда ты пишешь: cout << "что-то", то компилятор это воспринимает как: operator<<(cout, "что-то"). Этот оператор - типичная функция, которая возвращает свой первый параметр. В итоге запись: cout << "что-то" << "еще что-то" будет для него выглядеть так: operator<<(operator<<(cout, "что-то"), "еще что-то").
Как нетрудно догадаться, cout - это поток вывода на консоль. Ты в него отправляешь данные, а на консоли они появляются.

Дальше, while. Это цикл, его тело выполняется пока выражение в скобках истинно (не равно нулю).
i++ - это постфиксное увеличение i на 1. Лучше использовать префиксное: ++i. В общем случае оно быстрее. Подробнее http://forum.vingrad.ru/index.php?show_type=forum&showtopic=269794&kw=faq-c++.

Автор: Uchenik1989 3.2.2012, 13:19
Огромное спасибо за пояснения !!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)