10 октября 2010 в 18:27
Первая программа - "Hello world"
Откройте в Visual C++ 2008 Express Edition решение, которое мы создали в предыдущей статье. В обозревателе решенией выберите файл исходного кода hello world.cc.
Рассмотрим следующую программу на C++. Всё что делает программа - печатает строку "Hello world!!!" на экране монитора.
// Моя первая программа!!! #include <iostream> #include <conio.h> using namespace std; int main () { cout << "Hello world!!!\n"; _getch(); return 0; }
Теперь рассмотрим отдельные части программы и что они делают.
Комментарии
// Моя первая программа!!!
Первая строка является комментарием и компилятор не обращает на неё внимания. Компилятор различает комментарии благодаря знаку двойной косой черты // . Такие комментарии действительны до конца строки.
Существует ещё один способ закомментировать текст: /* */. Работает он следующим образом:
/* Первая строка комментария
...
Компилятор не обращает на все эти строки внимания
...
Последняя строка комментария */
Комментарии обычно используются для пояснений. Вообще, они очень полезны в больших программах над которыми ведётся работа не один месяц. Иногда бывает полезно закомментировать какую-то часть кода, например, когда ищут ошибку.
Директивы
После комментария в программе "Hello world" следуют две строки #include:
#include <iostream>
#include <conio.h>
Знак # указывает на то, что данная строка является директивой препроцессора, а ключевое слово include (include - включать) говорит компилятору, что нужно добавить файлы iostream и conio.h вместо соответствующих строк. Поясню на примере. Допустим у нас есть два файла:
файл 1.txt
текст первого файла
Файл 2.txt
#include <Файл 1.txt>
текст второго файла
Прежде чем начать компилирование, препроцессор подставляет вместо #include <Файл 1.txt> содержимое первого файла. В итоге второй файл выглядит так:
файл 2
текст первого файла
текст второго файла
Кроме include, существуют другие директивы препроцессора. Директива препроцессора #define MY_CONSTANT 1 указывает компилятору заменить в программе все встречающиеся MY_CONSTANT на единицу. Подробнее о данной директиве мы поговорим позже.
Препроцессор же - это специальная часть компилятора которая обрабатывает свои директивы перед началом компиляции программы.
В примере выше я использовал простые текстовые файлы (.txt). Обычно с помощью include вставляют специальные файлы - заголовочные (header files; header - заголовок). Стандартные заголовочные файлы С++ не имеют расширения, а файлы с расширением .h - унаследованы от языка С.
В файле iostream содержится определения объекта cout, который мы будем использовать для вывода данных на экран монитора.
В файле conio.h содержится определение функции _getch().
Дальше идёт директива using namespace, Это уже не директива препроцессора! Подробнее о назначении данной директивы и простанствах имён мы будем говорить позже, когда будем рассматривать многофайловые программы. Если просто, то данная директива нам нужна чтобы мы могли использовать фунции из файлов conio.h и iostream в наших программах.
Функция main()
Одним из основных понятий в любом языке программирования является функция.
Знакомство с функциями начинается с главной фунции любой программы - main().
Прежде чем использовать функцию, её нужно определить. Определение функции включает в себя: заголовок функции и тело функции.
Заголовок функции состоит из имени функции, в данном случае - main, после которого должны стоять скобки. Слово стоящее до имени фунции говорит о том, какого типа данные вернёт функция. В нашем случае, main() должна вернуть целое число (integer - целое число).
Тело функции начинается сразу после заголовка и заключено в фигурные скобки {}. Тело функции состоит из операторов. Операторы - это указания процессору (не компилятору!) выполнить какое-либо действие. Процессор - та самая железяка внутри компьютера.
В нашей программе три оператора:
cout << "Hello world!!!\n"; _getch(); return 0;
Обычно каждый оператор располагается в одной строке. И хотя это необязательно, я рекомендую вам всегда размещать каждый оператор в отдельной строке.
Каждый оператор заканчивается точкой с запятой - ;. Это обязательно. Не забывайте.
Следующая строка:
cout << "Hello world!!!\n";
Данный оператор выводит на экран текст. Операция << называется - операцией вставки и копирует то что находится справа в левую часть. То есть "Hello world!!!\n" копируется в cout.
cout - это объект (с объектами мы тоже познакомимся позже:)) предназначенный для работы со стандартным потоком вывода. Пока просто считайте, что он выводит текст на экран.
"hello world!!!\n" является строковой константой. Строковой - потому что - это строка текста. Константой - потому, что данная строка не меняет своего значения.
Отличительной чертой строковой константы являются двойные кавычки. Теперь, думаю, стоит разобраться с \n ? Последовательность символов \n, помещённая в строку или в строковую константу, говорит о том, что следующие символы будут выведены с новой строки. Именно благодаря этому символу курсор консоли в нашей программе находится на следующей строке после текста "hello world". Т.е. \n - это перевод курсора на следующую строку.
\n - это пример управляющей последовательности (escape-sequence). Отличительной чертой управляющей последовательности служит обратная косая черта "\". Существуют разные управляющие последовательности: \n \r \t \\ \". Но о них мы поговорим немного позже.
Наш оператор, как и положено заканчивается точкой с запятой.
Следующий оператор:
_getch();
В данной строке вызывается функция _getch(). Эта функция просит чтобы пользователь нажал клавишу клавиатуры. Причём после ввода, символ не отображается на экране.
Еслы бы не было этого оператора, то мы бы ничего не успели заметить: наша программа бы запустилась, напечатала сообщение и сразу же закрылась. А с данным оператором, программа ждёт, чтобы пользователь нажал любую клавишу.
_getch - это функция и перед тем как её использовать, её нужно определить (как функцию main()), за нас уже это сделали и мы её можем спокойно использовать. Но чтобы компилятор знал, что функция определена, нужно добавить к нашей программе заголовочный файл - conio.h.
Использовать функции очень легко. Да Вы, наверное, это и без меня заметили: нужно написать имя функции, скобки и закончить оператор точкой с запятой.
И последний оператор:
return 0;
Этот оператор обязателен для определения любой функции и main() не исключение. Благодаря этому оператору функция "возвращает" значение (в данном случае ноль) операционной системе или компилятору (если идёт отладка (debugging) приложения).
*Всего лишь одна программа, а сколько информации! Но, пока что Вы должны уяснить только следующее:
-В любой программе обязательно должна присутствовать функция main().
-Перед тем как использовать любую функцию, её нужно определить.
-Определение функции состоит из заголовка и тела. Тело функции заключено в фигурные скобки {}.
-Тело функции состоит из операторов. Каждый оператор - это команда для процессора. Операторы отделяются друг от друга точкой с запятой.
-Чтобы использовать функцию, её нужно вызвать. Мы не можем увидеть вызов main(), за нас этот вызов делает операционная система или компилятор. Любые другие функции Вы должны вызывать в ваших программах сами.
16 июня 2017 в 10:16
Профессиональная команда web-разработчиков занимается проектами любой сложности. С учетом значительного опыта работы в разработке web-приложений, результаты работы являются достойными и соответствующими заявленным требованиям.Мы разрабатываем идеальные программные решения для крупных заказчиков уже около десяти лет. В зависимости от Ваших требований наши инженеры службы технического контроля выполнят техническое исследование, чтобы убедиться, что программное обеспечение соответствует требованиям с точки зрения правильности, эффективности, безопасности, полноты, т.д.
авторизуйтесь
или войдите через