Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 1 из 1
  1. #1
    Аватар для Tracker1
    Проверенный

    Статус
    Оффлайн
    Регистрация
    30.07.2013
    Сообщений
    54
    Репутация:
    84 ±

    [Цикл уроков программиста] 5. Первая программа на С++

    Прежде чем приступить к этому уроку, вы должны знать как установить Visual Studio и должны были обязательно прочитать урок про базовые концепции программирования.
    В упражнениях к прошлому уроку вы должны были создать решение с произвольным именем и проект в нём с именем hello world (hello - привет, world - мир).

    Запустите Visual C++ 2010 Express Edition. При запуске отображается вот такое окно:


    Обратите внимание, что обозреватель решений (solution explorer) не содержит элементов. Это значит, что в данный момент ни одно решение не загружено.

    Справа от обозревателя решений открыта вкладка Start Page (Стартовая страница). Слева вверху этой вкладки есть область Recent Projects (Текущие проекты). В текущих проектах отображается список решений и проектов, с которыми вы недавно работали. На картинке выше я обвёл решение, которое создал в упражнениях к предыдущему уроку. У вас это решение может называться по-другому.

    Щёлкните на имя решения, которое вы создали в упражнениях к предыдущему уроку. Оно отобразится в обозревателе решений.

    Помимо текущих проектов, есть ещё один способ открыть решение/проект. Нужно выбрать пункт меню File → Open → Project/Solution (Файл → Открыть → Проект/Решение). Далее нужно перейти в папку, в которую вы сохранили решение, и выбрать файл с расширением .sln.

    Итак, мы открыли нужное нам решение:


    При этом автоматически должна открыться новая вкладка - hello world.cpp (на картинке я подчеркнул её). У вас имя этой вкладки может быть другим. Но оно обязательно совпадает с именем файла с исходным кодом. Если при открытии решения у вас всё ещё отображается вкладка Start Page, то в обозревателе решений щёлкните на имя файла с исходным кодом.

    Во вкладке hello world.cpp расположен текстовый редактор. Именно здесь нужно будет писать исходный код.

    Ниже в тексте урока приводится листинг программы Hello World. Вставьте (или перепечатайте) этот код в редактор. Теперь редактор должен выглядеть вот так:


    Обратите внимание на звёздочку рядом с названием вкладки и жёлтую вертикальную линию слева от кода. Это признаки того, что файл не сохранён. Сохраните файл или всё решение (через меню File). Звёздочка исчезнет, а жёлтая полоса станет зелёной.

    Ещё раз хочу обратить ваше внимание на то, что исходный код - это простой текст. Найдите на диске ваше решение. Зайдите в эту папку, затем в папку проекта и откройте файл hello world.cpp в любом текстовом редакторе (в блокноте или в Word'е). Т.е. исходный код можно писать в любом текстовом редакторе. Но текстовый редактор IDE намного удобнее: во-первых, он подсвечивает некоторые конструкции языка (зелёный цвет - комментарии, синий - ключевые слова), во-вторых, в редакторе IDE сразу после написания кода можно скомпилировать программу.

    В обозревателе решений может отображаться только одно решение. Если вы хотите открыть другое решение, то сначала нужно закрыть открытое. Это можно сделать через пункт меню File → Close Solution (Файл → Закрыть решение).

    В каждом решении может быть несколько проектов. Один проект - одна программа. В любой проект можно добавить несколько файлов. Файлы с исходным кодом в обозревателе решений хранятся в Source Files (Файлы с исходным кодом). Что такое Header Files и Resource Files мы ещё рассмотрим.

    Листинг программы Hello world на C++

    Теперь посмотрим на исходный код программы Hello World на C++. Всё что делает программа - печатает строку "Hello world!!!" на экране монитора:

    PHP код:
    // Моя первая программа!!!

    #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() не исключение. Благодаря этому оператору функция "возвращает" (return - возвращать) значение (в данном случае ноль) операционной системе или компилятору (если идёт отладка (debugging) приложения).

    Всего лишь одна программа, а сколько информации! Пока что вы должны уяснить только следующее:
    • В любой программе обязательно должна присутствовать функция main().
    • Перед тем как использовать любую функцию, её нужно определить.
    • Определение функции состоит из заголовка и тела. Тело функции заключено в фигурные скобки {}.
    • Тело функции состоит из операторов. Каждый оператор - это команда для процессора. Операторы отделяются друг от друга точкой с запятой.
    • Чтобы использовать функцию, её нужно вызвать. Мы не можем увидеть вызов main(), за нас этот вызов делает операционная система или компилятор. Любые другие функции вы должны вызывать сами.



    Запуск программы

    На данный момент в редакторе кода у вас должен находиться полный листинг программы Hello World. Чтобы исходный код превратился в полноценную программу, его нужно скомпилировать и скомпоновать.

    Процесс компиляции и компоновки называется сборкой (building) или построением.

    Чтобы собрать программу, нажмите клавишу F7. Чтобы запустить, нажмите F5. При запуске программы откроется окно консоли, в котором будет выведена строка текста.

    Упражнения

    1. Добавьте к программе Hello World вывод ещё одной строки. Строка обязательно должна быть на английском языке (русский мы ещё пока не умеем выводить). Оператор вывода строки обязательно должен находиться до оператора return.
    2. После вывода каждой строки останавливайте программу с помощью функции _getch.

  2. 2 пользователя(ей) сказали cпасибо:
    vovandolg (15.10.2016) [ForD] (25.12.2013)
 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •