Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Мой первый урок по с++, Оцените, профи... 
:(
    Опции темы
gepard
  Дата 2.4.2004, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Доброго времени суток вам, уважаемые братья программисты. Как-то на досуге, листая очередные уроки по c++, понял, что примеры в этой книге абсолютно безнадёжные и что их даже неплохо знающий C++ с трудом поймёт их. В другом учебнике наткнулся на неполноту данных. И исходя из всего этого решил попробовать написать свои уроки.

Теперь от лирики плавно перетечём к виновнику вашего внимания - c++.

Я буду писать все программы опираясь на то, что у вас стоит и работает VC++ 6.0. Плюс вы умеете создавать проект.

Начнём разбираться с самой простой программы - "Hello World!". Честно говоря я до сих пор не могу понять почему в первой программе стали выводить именно эту надпись("Hello World!"), а не скажем, например, "It Work!" или "My First Program". Просто так повелось. Не будем нарушать традиций.

Код

#include <iostream.h>//1
void main()//2
{//3
int i;//4
for (i=0;i<10;i++)//5
 cout<<i<<")Hello World\n”;//6
}//7


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

Частая ошибка начинающих программистов - забывают ставить “;” в конце строки. Но и лепить их везде тоже нельзя.

Для начала объясню вам самое простое в этой программе - комментарии. Комментарии - это такой текст, при встрече которого компилятором игнорируется и не считается как исходный код программы, т.е. с помощью комментариев вы можете писать любой текст прямо в вашей программе и он не будет иметь никакого влияния. В данном случае комментарием являются номера строк. Видите текст после двойных слэшей(//)? Там есть цифры - номера строк. Это специально добавленные мной комментарии. Как "закомментировать" что-либо? Есть два способа(во всяком случае мне известно только два):
1)Например, у нас есть текст:
Код

This Text For Comments

тогда мы можем взять его в специальные "комментарные" скобки:
открывающая - "/*"
закрывающая - "*/"
Если закомментировать текст написанный ваше, с помощью этих "скобок", то мы получим:
Код

/*
This Text For Comments
*/

Текст выделится зелёным цветом - вы его закомментировали.
2)С помощью двух слэшей. Например, мы имеем тот же текст:
Код

This Text For Comments

тогда, если мы закомментируем этот текст вторым способом, то получим:
Код

//Test For Comments

Текст выделится зелёным цветом - вы его закомментировали.

Кстати, комментировать же можно не только простой текст, но и вообще любой. Таким образом вы можете не удалять какой-либо кусок исходного кода программы, а просто его закомментировать и потом, если понадобится, вернется к нему.
'В чём отличие двух способов?" - спросите вы. А я вам отвечу: "С помощью первого способа можно комментировать неопределённое колличество строк, а вторым - только одну."

Теперь перейдём непосредственно к самому исходному коду программы.

Первая строчка(помечена комментарием зелёного цвета "//1". Далее номер строк, о которых будет идти речь, будут соответствовать цифрам в комментариях.) подключает библиотеку, с помощью служебного слова include. Надо отметить, что она подключает библиотеку из папки xxx\include, где xxx - полный путь к папке, куда вы установили свой VC++. Если же вы хотите подключить библиотеку из другого места(может написали свою или где-то достали), то вам нужно вместо скобок(“<” и “>”) поставить кавычки ( и ) и указать путь к файлу библиотеки(в случае, если она находится у вас в папке, вместе с исходным кодом программы, то вы можете просто поставить кавычки и указать имя библиотеки. Это укажет компилятору на то, что файл библиотеки находится в текущем каталоге).

Вторая строка программы создают основную функцию(о том что это такое и как их(функции) создавать мы поговорим на следующем уроке), в которой происходят все программируемые процессы. Разберёмся с этим поподробнее:
Код

void main()

В этой строке говорится, что заводится функция с именем “main”(именно такое имя должно быть у главной функции, если его нет, то программа не будет работать. Это как бы ориентир для компилятора) типа void. Это пустой тип, функция, которая описана этим типом не возвращает никаких значений. Надо отметить, что функцию main можно было описать ещё и так:
Код

int main()
{

return 0;
}

где … - какой-то программный код. В данном случае у нас функция типа “int”. Это целочисленный тип и функция описанная этим типом, обязана возвращать какое-либо целочисленное значение, у нас это - “0”. С помощью служебного слова “return” производится возврат значения функцией. Надо отметить, что если вы в середине функции поставите строку с возвратом какого-либо значения, то выход из функции произойдёт по достижению строки с описанием возвратного значения функции. Другими словами, если программа всретит слово “return”, то она тут же завершит функцию, в которой используется это слово. “return” может и не возвращать никакого значения, т.е. вы пишите просто строку “return”(например, не “return 0”), в таком случае программа сразу же прерывает выполнение функции. Всё дело в том, что, если использовать просто строку с служебным словом “return”, то тогда можно закончить выполнение функции любого типа(даже “void”).

Третья строка - открывающая операторная скобка(“{”). Она указывает на то, что функция начинает своё описание здесь же. Дело в том, что можно сначала описать тип и название функции, а сам программный её код описать потом(об этом я расскажу, когда буду говорить про функции).

Четвёртая строка - строка, где заводится новая переменная. “int” - целочисленный тип переменной, т.е. переменная может принимать только целочисленные значения, дробных она принимать не может. Например: 2, 75, 863, 555, 12, 1234, 999 и т.д. Затем идёт имя переменной - “i”. Оно может быть абсолютно любым, но только если оно не совпадает с служебными словами языка. Вот примеры переменных, при заведении которых будут выданы ошибки
Код

int cout;
int int;
int include

Также, после заведения переменной можно сразуже указать её начальное значение. В своём примере я этого не делаю, но выглдяит это так:
Код

int i=0;

Таким образом, когда переменная будет заведена в памяти, ей будет присвоено значение 0.
Переменные могут быть не только типа “int” есть и ещё. Вот их перечень вместе с диапазонами их значений:

int - от -65536 до 655535 - целочисленный
short - от -32768 до 32767 - целочисленный
long - от -2147483648 до 2137483647 - целочисленный
char - от 0 до 255 - текстовый
float - от -32768 до 32767 - дробный
double - от -65536 до 65535
__int8 - от -128 до 127 - целочисленный

Ещё есть __int16, __int32, __int64, но они похожие по значениям на остальные, но являются целочисленными.
Когда заводишь переменную, то можно указать, что-то вроде её параметров. Я расскажу о двух:
1)”unsigned”. Например,
Код

unsigned __int8 i;

Благодаря этому параметру твоя переменная не будет иметь отрицательных значений, а будет иметь удвоенное колличество положительных, т.е. диапазон значений переменной “i” не -128 до 127, а от 0 до 255. Естественно этот параметр переменной пригоден не только для типа “__int8”, а и для всех остальных,
2)”register”. Например:
Код

register int i;

С помощью этого параметра переменная пускается на обработку напрямую через регистры процессора, что увеличивает скорость работы с ней. “Почему же, тогда все переменные не пускать через регистр, если они быстрее работают?” - спросишь ты. “Колличество регистров процессора ограниченно!” - отвечу я.

Надо отметить что, если вы заводите несколько переменных одного типа, то необязательно заводить их на нескольких строках, например, так:
Код

int a=2;
int b=0;
int c=22;

можно завести их в одной строке(через запятую), тем самым сократив колличество строк исходного кода:
Код

int a=2, b=0, c=22;


В пятой строке идёт цикл. Циклы создаются с помощью служебного слова for, после чего следуют параметры. Первый параметр - переменная, которая будет участвовать в цикле(их может быть несколько. Перечисляться должны через запятую) и её начальное значение, если это требуется. Второй - предел циклы, т.е. до каких пор цикл будет работать. Например, если я пишу что “i<10”, значит цикл будет работать(учитывая, что я поставил начальное значение переменной “i”=0) от 0 до 10, не включая 10, т.е. последнее значение в цикле будет 9, но пройдёт он 10 раз, т.к. начинается всё с 0-ого значения. Третий параметр - как производится изменение переменной, участвующей в цикле. В данном случае - “i++”. “Что значит “++”?” - спросите вы. А я вам отвечу - “Это увеличение переменной на 1, после прохождения цикла.”
Здесь сразу стоит сказать о возможных операциях с переменными и как они записываются:
Сложение - +
Вычитание - -
Умножение - *
Деление - /
Остаток - %
Равно - =
Неравно - !=
Больше - >
Меньше - <
Меньше или равно - <=
Больше или равно - >=
Увеличить на ед. - ++
Уменьшить на ед. - --
Увеличить на опред. число - +=x, где х - какое-то число.
Уменьшить на опред. число - -=х, где х - какое-то число.
Умножить на опред. число - *=х, где х - какое-то число.
Примеры:
Код

int a=22, b=56;
a+=b;//a=78
a++;//a=79
a*=2;//a=158
b=b-a;//b=-102
b=b%4;//b=5

Затем, после строки с описанием цикла идёт строка:
Код

cout<<i<<")Hello World\n”;//6

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

for (i=0;i<10;i++)
{
cout<<i<<")Hello World\n”;//6
cout<<i<<")Hello World\n”;//6
}

Теперь в этом цикле будут выполняться две строки, хоть они и абсолютно одинаковые.

Теперь о шестой строке:
Видите “cout<<”? Его можно расшифровать, как: “Послать в поток вывода текст “Значение переменной i” и “ )Hello World\n””, склеивая их. Другими словами, просто напечатать текущее значение переменной i+текст “)Hello World\n”. Таким образом,
после выполнения программы, вы увидите на экране следующее

0)Hello World!
1)Hello World!
2)Hello World!
3)Hello World!
4)Hello World!
5)Hello World!
6)Hello World!
7)Hello World!
8)Hello World!
9)Hello World!

Ну что? Хоть что-нибудь укладывается в голове?
“А где же символы “\n”?“- спросите вы. Отвечаю: “Это служебные символы, которые обозначают переход на следующую строку.”
Т.е., если бы мы записали строку вот так:
Код

cout<<i<<")Hello World”;//6

то на экране мы бы увидели:

0)Hello World!1)Hello World!2)Hello World!3)Hello World!4)Hello World!5)Hello World!6)Hello World!7)Hello World!8)Hello World!9)Hello World!

Просто голый текст. Ну, естественно “\n” не единственно возможный параметр, есть и другие:
\t - табуляция, эффект тот же, что вы нажимаете кнопку Tab у себя в редакторе текста.
\r - установка каретки в начало текущей строки, т.е., например, у вас есть строка “Hello world”, и если в конце поставить \r,то при выполнение программы, курсор(которым печатается весь текст) окажется там же где и буква “H”
\a - системный звук ошибки.
Есть и другие, но это основные.

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

На этом стоит закончить первый урок. Надеюсь вам было интересно!

Это сообщение отредактировал(а) gepard - 2.4.2004, 08:09


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
bel_nikita
Дата 2.4.2004, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Слушай, а ты сам пробывал читать свою поэму? Уж больно очень кратко написано biggrin.gif
А кого учить собрался? biggrin.gif



--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
srd
Дата 2.4.2004, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



Цитата
Честно говоря я до сих пор не могу понять почему в первой программе стали выводить именно эту надпись("Hello World!")

Всё началось с первого издания книги Керигана и Ричи. В ней первой программой была Hello, World. Забавно, но FSF лицензировала Hello, World под GPL.


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
gepard
Дата 2.4.2004, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Цитата
Слушай, а ты сам пробывал читать свою поэму?

Мельком, исправляя ошибки, а что очень стрёмно?
Цитата
А кого учить собрался?

да просто так написал.


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
Artemon
Дата 2.4.2004, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 1
Всего: 20



Qepard, ты уж не принимай участников форума за даунов.


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
mr.DUDA
Дата 2.4.2004, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Цитата
Qepard, ты уж не принимай участников форума за даунов

сильно сказано, но и в самом деле wink.gif ...

Первый пример не компилируется wink.gif ...
И зачем так заморачивать:
Цитата
Видите текст после двойных слэшей(//)? Там есть цифры - номера строк. Это специально добавленные мной комментарии.

новичку не так-то просто будет разобраться с таким "первым примером"...

Цитата
специальные "комментарные" скобки

прикольно сформулировано

Синтаксические ошибки в урок вставлены для бОльшей убедительности ?

А так в целом ничего, только непонятно на какую аудиторию расчитано. Те, кто на форум по С++ приходят, ищут ответ на конкретно поставленный вопрос или сами отвечают, но не туториал "как начать программить на С++" с самых азов. Этот топик имхо надо кинуть в отдельный форум: "Для самых маленьких" tounge.gif...

Впрочем, если gepard'у интересно попробовать себя в роли гуру по С++, то пусть пробует. Интересно, наверное, будет почитать уроки по ООП, STL и паттернам на С++... Дерзай !



--------------------
user posted image
PM MAIL WWW   Вверх
gepard
Дата 2.4.2004, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Не та аудитория, я умываю руки. Лучше бы вообще молчал. butbut.gif

Это сообщение отредактировал(а) gepard - 2.4.2004, 11:14


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
srd
Дата 2.4.2004, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



Цитата
Если закомментировать текст написанный ваше, с помощью этих "скобок", то мы получим:

/*
This Text For Comments
*/

Текст выделится зелёным цветом - вы его закомментировали.

А у меня закомментированный текст не зеленеет, а становится светло серым!! У меня какой-то неправильный C++? omg.gif


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
math_beginer
Дата 2.4.2004, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 29.5.2003

Репутация: нет
Всего: 1



Цитата
только непонятно на какую аудиторию расчитано. Те, кто на форум по С++ приходят, ищут ответ на конкретно поставленный вопрос или сами отвечают, но не туториал "как начать программить на С++" с самых азов.

ИМХО тем кто уже знает С++ это непонять.

ЗЫ В разделе ASM, помнится, есть что-то похожее (Chingachguk писал) - многим понравилось... почему ж здесь нельзя?
--------------------
Метод "Кнута и Пряника" - алгоритм, описанный в известной монографии Кнута и позднее модифицированный русским программистом Пряником.
PM MAIL   Вверх
A_lir
Дата 2.4.2004, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 27.3.2004

Репутация: нет
Всего: нет



Эй, а зачем тебе это? Я знаю десятки книг по С++, начинающиеся также.
Если не терпится, но напиши свою книгу или издай курс лекций.
PM MAIL   Вверх
gepard
Дата 3.4.2004, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Цитата
Эй, а зачем тебе это? Я знаю десятки книг по С++, начинающиеся также.

Да потому что все эти книги - ...
Там ничерта не понять. Просто помнб по своей ненавести.


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1494 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.