|
Модераторы: Daevaorn |
|
gepard |
|
||||||||||||||||||||||||||||||||||
Эксперт Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
Доброго времени суток вам, уважаемые братья программисты. Как-то на досуге, листая очередные уроки по c++, понял, что примеры в этой книге абсолютно безнадёжные и что их даже неплохо знающий C++ с трудом поймёт их. В другом учебнике наткнулся на неполноту данных. И исходя из всего этого решил попробовать написать свои уроки.
Теперь от лирики плавно перетечём к виновнику вашего внимания - c++. Я буду писать все программы опираясь на то, что у вас стоит и работает VC++ 6.0. Плюс вы умеете создавать проект. Начнём разбираться с самой простой программы - "Hello World!". Честно говоря я до сих пор не могу понять почему в первой программе стали выводить именно эту надпись("Hello World!"), а не скажем, например, "It Work!" или "My First Program". Просто так повелось. Не будем нарушать традиций.
Вообще, вы можете просто взять и скопировать текст этой программы в свой проект и тут же увидите результат. Частая ошибка начинающих программистов - забывают ставить “;” в конце строки. Но и лепить их везде тоже нельзя. Для начала объясню вам самое простое в этой программе - комментарии. Комментарии - это такой текст, при встрече которого компилятором игнорируется и не считается как исходный код программы, т.е. с помощью комментариев вы можете писать любой текст прямо в вашей программе и он не будет иметь никакого влияния. В данном случае комментарием являются номера строк. Видите текст после двойных слэшей(//)? Там есть цифры - номера строк. Это специально добавленные мной комментарии. Как "закомментировать" что-либо? Есть два способа(во всяком случае мне известно только два): 1)Например, у нас есть текст:
тогда мы можем взять его в специальные "комментарные" скобки: открывающая - "/*" закрывающая - "*/" Если закомментировать текст написанный ваше, с помощью этих "скобок", то мы получим:
Текст выделится зелёным цветом - вы его закомментировали. 2)С помощью двух слэшей. Например, мы имеем тот же текст:
тогда, если мы закомментируем этот текст вторым способом, то получим:
Текст выделится зелёным цветом - вы его закомментировали. Кстати, комментировать же можно не только простой текст, но и вообще любой. Таким образом вы можете не удалять какой-либо кусок исходного кода программы, а просто его закомментировать и потом, если понадобится, вернется к нему. 'В чём отличие двух способов?" - спросите вы. А я вам отвечу: "С помощью первого способа можно комментировать неопределённое колличество строк, а вторым - только одну." Теперь перейдём непосредственно к самому исходному коду программы. Первая строчка(помечена комментарием зелёного цвета "//1". Далее номер строк, о которых будет идти речь, будут соответствовать цифрам в комментариях.) подключает библиотеку, с помощью служебного слова include. Надо отметить, что она подключает библиотеку из папки xxx\include, где xxx - полный путь к папке, куда вы установили свой VC++. Если же вы хотите подключить библиотеку из другого места(может написали свою или где-то достали), то вам нужно вместо скобок(“<” и “>”) поставить кавычки (“ и ”) и указать путь к файлу библиотеки(в случае, если она находится у вас в папке, вместе с исходным кодом программы, то вы можете просто поставить кавычки и указать имя библиотеки. Это укажет компилятору на то, что файл библиотеки находится в текущем каталоге). Вторая строка программы создают основную функцию(о том что это такое и как их(функции) создавать мы поговорим на следующем уроке), в которой происходят все программируемые процессы. Разберёмся с этим поподробнее:
В этой строке говорится, что заводится функция с именем “main”(именно такое имя должно быть у главной функции, если его нет, то программа не будет работать. Это как бы ориентир для компилятора) типа void. Это пустой тип, функция, которая описана этим типом не возвращает никаких значений. Надо отметить, что функцию main можно было описать ещё и так:
где … - какой-то программный код. В данном случае у нас функция типа “int”. Это целочисленный тип и функция описанная этим типом, обязана возвращать какое-либо целочисленное значение, у нас это - “0”. С помощью служебного слова “return” производится возврат значения функцией. Надо отметить, что если вы в середине функции поставите строку с возвратом какого-либо значения, то выход из функции произойдёт по достижению строки с описанием возвратного значения функции. Другими словами, если программа всретит слово “return”, то она тут же завершит функцию, в которой используется это слово. “return” может и не возвращать никакого значения, т.е. вы пишите просто строку “return”(например, не “return 0”), в таком случае программа сразу же прерывает выполнение функции. Всё дело в том, что, если использовать просто строку с служебным словом “return”, то тогда можно закончить выполнение функции любого типа(даже “void”). Третья строка - открывающая операторная скобка(“{”). Она указывает на то, что функция начинает своё описание здесь же. Дело в том, что можно сначала описать тип и название функции, а сам программный её код описать потом(об этом я расскажу, когда буду говорить про функции). Четвёртая строка - строка, где заводится новая переменная. “int” - целочисленный тип переменной, т.е. переменная может принимать только целочисленные значения, дробных она принимать не может. Например: 2, 75, 863, 555, 12, 1234, 999 и т.д. Затем идёт имя переменной - “i”. Оно может быть абсолютно любым, но только если оно не совпадает с служебными словами языка. Вот примеры переменных, при заведении которых будут выданы ошибки
Также, после заведения переменной можно сразуже указать её начальное значение. В своём примере я этого не делаю, но выглдяит это так:
Таким образом, когда переменная будет заведена в памяти, ей будет присвоено значение 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”. Например,
Благодаря этому параметру твоя переменная не будет иметь отрицательных значений, а будет иметь удвоенное колличество положительных, т.е. диапазон значений переменной “i” не -128 до 127, а от 0 до 255. Естественно этот параметр переменной пригоден не только для типа “__int8”, а и для всех остальных, 2)”register”. Например:
С помощью этого параметра переменная пускается на обработку напрямую через регистры процессора, что увеличивает скорость работы с ней. “Почему же, тогда все переменные не пускать через регистр, если они быстрее работают?” - спросишь ты. “Колличество регистров процессора ограниченно!” - отвечу я. Надо отметить что, если вы заводите несколько переменных одного типа, то необязательно заводить их на нескольких строках, например, так:
можно завести их в одной строке(через запятую), тем самым сократив колличество строк исходного кода:
В пятой строке идёт цикл. Циклы создаются с помощью служебного слова for, после чего следуют параметры. Первый параметр - переменная, которая будет участвовать в цикле(их может быть несколько. Перечисляться должны через запятую) и её начальное значение, если это требуется. Второй - предел циклы, т.е. до каких пор цикл будет работать. Например, если я пишу что “i<10”, значит цикл будет работать(учитывая, что я поставил начальное значение переменной “i”=0) от 0 до 10, не включая 10, т.е. последнее значение в цикле будет 9, но пройдёт он 10 раз, т.к. начинается всё с 0-ого значения. Третий параметр - как производится изменение переменной, участвующей в цикле. В данном случае - “i++”. “Что значит “++”?” - спросите вы. А я вам отвечу - “Это увеличение переменной на 1, после прохождения цикла.” Здесь сразу стоит сказать о возможных операциях с переменными и как они записываются: Сложение - + Вычитание - - Умножение - * Деление - / Остаток - % Равно - = Неравно - != Больше - > Меньше - < Меньше или равно - <= Больше или равно - >= Увеличить на ед. - ++ Уменьшить на ед. - -- Увеличить на опред. число - +=x, где х - какое-то число. Уменьшить на опред. число - -=х, где х - какое-то число. Умножить на опред. число - *=х, где х - какое-то число. Примеры:
Затем, после строки с описанием цикла идёт строка:
Именно она будет выполнятся в цикле. Вообще, если вы хотите, чтобы в цикле выполнялась не одна строка, а несколько, то вам надо брать их в операторные скобки. Таким образом получится следующие:
Теперь в этом цикле будут выполняться две строки, хоть они и абсолютно одинаковые. Теперь о шестой строке: Видите “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”?“- спросите вы. Отвечаю: “Это служебные символы, которые обозначают переход на следующую строку.” Т.е., если бы мы записали строку вот так:
то на экране мы бы увидели: 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 -------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||
bel_nikita |
|
|||
Эксперт Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Слушай, а ты сам пробывал читать свою поэму? Уж больно очень кратко написано
А кого учить собрался? |
|||
|
||||
srd |
|
|||
Нереварин Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
Всё началось с первого издания книги Керигана и Ричи. В ней первой программой была Hello, World. Забавно, но FSF лицензировала Hello, World под GPL. -------------------- Не смей читать мою подпись!!! |
|||
|
||||
gepard |
|
||||
Эксперт Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
Мельком, исправляя ошибки, а что очень стрёмно?
да просто так написал. -------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
||||
|
|||||
Artemon |
|
|||
а ты мне нравишься Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 1 Всего: 20 |
Qepard, ты уж не принимай участников форума за даунов.
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
mr.DUDA |
|
||||||
3D-маньяк Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
сильно сказано, но и в самом деле ... Первый пример не компилируется ... И зачем так заморачивать:
новичку не так-то просто будет разобраться с таким "первым примером"...
прикольно сформулировано Синтаксические ошибки в урок вставлены для бОльшей убедительности ? А так в целом ничего, только непонятно на какую аудиторию расчитано. Те, кто на форум по С++ приходят, ищут ответ на конкретно поставленный вопрос или сами отвечают, но не туториал "как начать программить на С++" с самых азов. Этот топик имхо надо кинуть в отдельный форум: "Для самых маленьких" ... Впрочем, если gepard'у интересно попробовать себя в роли гуру по С++, то пусть пробует. Интересно, наверное, будет почитать уроки по ООП, STL и паттернам на С++... Дерзай ! -------------------- |
||||||
|
|||||||
gepard |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
Не та аудитория, я умываю руки. Лучше бы вообще молчал.
Это сообщение отредактировал(а) gepard - 2.4.2004, 11:14 -------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
|||
|
||||
srd |
|
|||
Нереварин Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
А у меня закомментированный текст не зеленеет, а становится светло серым!! У меня какой-то неправильный C++? -------------------- Не смей читать мою подпись!!! |
|||
|
||||
math_beginer |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 108 Регистрация: 29.5.2003 Репутация: нет Всего: 1 |
ИМХО тем кто уже знает С++ это непонять. ЗЫ В разделе ASM, помнится, есть что-то похожее (Chingachguk писал) - многим понравилось... почему ж здесь нельзя? --------------------
Метод "Кнута и Пряника" - алгоритм, описанный в известной монографии Кнута и позднее модифицированный русским программистом Пряником. |
|||
|
||||
A_lir |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 27.3.2004 Репутация: нет Всего: нет |
Эй, а зачем тебе это? Я знаю десятки книг по С++, начинающиеся также.
Если не терпится, но напиши свою книгу или издай курс лекций. |
|||
|
||||
gepard |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
Да потому что все эти книги - ... Там ничерта не понять. Просто помнб по своей ненавести. -------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
|||
|
||||
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |