Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Создание приложения Windows Forms
Это работа для другого мастера. Создайте еще один новый проект, но на этот раз в левой панели диалогового окна New Project (Новый проект) выберите тип CLR, а в правой панели — шаблон Windows Forms Application (Приложение Windows Forms). Затем можете ввести имя проекта, например, Ех1_05. В этом случае больше нет никаких опций для выбора, поэтому щелкните на кнопке ОК для создания проекта. Панель Solution Explorer отображает файлы, сгенерированные для нового проекта. В этом проекте файлов сравнительно меньше — если вы заглянете в каталог, то обнаружите, что в решение включено всего 15 файлов. Одна из причин этого состоит в том, что начальный графический интерфейс пользователя (GUI) намного проще, чем у родного приложения C++, использующего MFC. Приложение Windows Forms не имеет меню или панелей инструментов и состоит из единственного окна. Конечно, вы можете все это добавить относительно легко, но мастер Windows Forms не предполагает, что это вам понадобится сразу. Теперь окно редактора показывает образ окна приложения вместо его кода. Причина в том, что разработка GUI для Windows Forms в основном ориентирована на подход графического проектирования, а не подход кодирования. Вы добавляете компоненты GUI в окно приложения, перетаскивая или размещая их интерактивно, в графическом виде, a Visual C++ 2005 автоматически генерирует весь код, необходимый для их отображения. Если вы нажмете < Ctrl+Alt+X> либо выберете пункт меню View^Toolbox (Вид^Панель инструментов), то увидите дополнительное окно Toolbox (Панель инструментов), показывающее список компонентов GUI. Убедимся, что в следующей версии работа примерно такая же. Первая программа Microsoft Visual C++ 2008 (include, main, printf) Для написания нашей первой программы в Microsoft Visual C++ 2008 создадим проект. В меню FiIe-> New выбираем Project... (Ctrl+Shift+N). В появившемся окне (рис. 1) выбираем Visual C++ -> Win32. В списке возможных проектов выбираем Win32 Console Application, вводим в поле Name название нашего первого проекта (например hello_world), после чего нажимаем ОК*. Во вкладке Solution Explorer нажимаем правой кнопкой мыши по нашему проекту, в меню выбираем Add-> New Item... В появившейся окне выбираем категорию (category) Visual C++, Code. Выбираем шаблон (template) C++ FUe(.cpp). В поле Name вводим имя файла с расширением срр и нажимаем Add. Файл, который мы создали, открывается для редактирования. Вот наша первая программа: //двумя наклонными чертами отделяется комментарий //это заголовочный файл, который мы присоединяем к программе, //чтобы использовать процедуры ввода-вывода #include < stdio.h> //это точка входа в программу, она обязательна //для каждой программы на C++ int main() { //это операция вывода в консоль //значок \n означает перенос строки printf(" Hello world It's my first C++ program\n" ); //здесь мы выходим из функции точки входа, возвращаем //результат 0 - т.е. программа выполнилась успешно return 0; } Набираем это в файл, который мы создали и нажимаем Ctrl-F5. После этого программа откомпилируется и на экране появится консоль с нашим сообщением и ожидаем нажатия любой кнопки для закрытия. Простая программа. Простой пример поможет вам лучше понять элементы программы. Начните с создания нового проекта — вы можете воспользоваться комбинацией клавиш < Ctrl+Shift+N> для ускорения этой операции. Когда появится диалоговое окно New Project (Новый проект), выберите Win32 в качестве типа проекта и Win32 Console Application (Консольное приложение Win32) — в качестве шаблона. Назовите проект Ех2_01. Если вы щелкнете на кнопке ОК, то увидите новое диалоговое окно, которое показывает обзор того, что сгенерирует мастер Application Wizard. Если теперь вы щелкнете на ссылке Application Settings (Настройки приложения) в левой части диалогового окна, то увидите дополнительные опции приложения Win32. Настройкой по умолчанию будет Console application (Консольное приложение), что включает в себя файл, содержащий версию функции main () по умолчанию, но вы должны начать с самой базовой структуры проекта, поэтому выберите Empty project (Пустой проект) в наборе дополнительных опций и щелкните на кнопке Finish (Готово). Теперь ваш проект создан, но не содержит никаких файлов. Вы можете видеть, что входит в проект на панели Solution Explorer в левой части главного окна Visual C++ 2005. Начните с добавления к проекту нового исходного файла, для чего щелкните правой кнопкой мыши на Source Files (Исходные файлы) в панели Solution Explorer и выберите в контекстном меню пункт Add^New Item (Добавить1^ Новый элемент). При этом появится диалоговое окно Add New Item (Добавить новый элемент). Убедитесь, что выделен шаблон C++ File (.срр) (Файл C++ (.срр)), щелкнув на нем, и введите имя файла. Файл автоматически получит расширение. срр, набирать его не нужно. Не будет никаких проблем, если имя файла совпадет с именем проекта. Файл проекта имеет расширение.vcproj, поэтому его полное имя будет отличаться от имени исходного файла. Щелкните на кнопке Add (Добавить) для создания файла. Затем вы можете набрать следующий код в панели редактора окна IDE: // A Simple Example of a Program #include < iostream> using std:: cout; using std:: endl; int main() { int apples, oranges; // Declare two integer variables int fruit; //...then another one apples = 5; oranges = 6; // Set initial values fruit = apples + oranges; // Get the total fruit cout < < endl; // Start output on a new line cout < < " Oranges are not the only fruit... " < < endl < < " - and we have " < < fruit < < " fruits in all."; cout < < endl; // Output a new line character return 0; // Exit the program } С русскими комментариями это будет выглядеть так: // Простой пример программы #include < iostream> using std:: cout; using std:: endl; int main () { int apples, oranges; int fruit; apples = 5; oranges = 6; fruit = apples + oranges; cout < < endl; // Объявление двух целочисленных переменных //... и еще одной // Присваивание начальных значений // Получить сумму // Начать вывод с новой строки cout < < " Апельсины - не единственные фрукты. " < < endl < < " - и всего у нас " < < fruit « " фруктов."; cout < < endl; // Вывести символ новой строки return 0; // Выход из программы Получим Oranges are not the only fruit…" - and we have 11 fruit in all."; Что значит Апельсины - не единственные фрукты... - и всего у нас 11 фруктов. Press any key to continue... Для продолжения нажмите любую клавишу ... Первые две строки выдала программа, а последняя указывает, что вы можете завершить выполнение и закрыть окно командной строки. Комментарии к программе Первых две строки программы — это комментарии. В любой строке кода два последовательных слеша //, если они не содержатся внутри текстовой строки, говорят о том, что остальная часть строки справа от них представляет собой комментарий. Как видите, несколько строк в программе содержат комментарии вместе с операторами самой программы. Вы можете применять альтернативную форму комментариев, ограничивая их комбинациями символов /* и */. Например, первая строка программы могла бы выглядеть следующим образом: /* Ех2_01.срр */ Комментарий, начинающийся с //, включает только часть строки справа от него, в то время как форма /*... */ определяет, что все, находящееся между /* и */, является комментарием, и может распространяться на несколько строк. Например, вполне можно написать так: /* Ех2_01.срр */ /* Ех2_01.срр Простой пример программы */ Здесь все четыре строки являются комментариями. Если вы хотите выделить некоторые строки комментариев, то всегда можете украсить их рамкой: /**************************** * Ех2_01.срр * * Простой пример программы */ Как правило, всегда нужно стараться снабжать программы исчерпывающими комментариями. Комментарии должны быть достаточными, чтобы другой программист или вы сами через какое-то время, смогли понять назначение конкретной части кода и то, как он работает. Директива #include — файлы заголовков Вслед за начальными комментариями в программе находится директива #include: #include < iostream> Она называется директивой, поскольку указывает компилятору сделать что-то — в данном случае вставить содержимое файла < iostream> в программу перед ее компиляцией. Файл < iostream> называется файлом заголовков, потому что обычно он появляется в начале программного файла. В действительности точнее было бы назвать < iostream> заголовком, так как согласно стандарту ANSI C++ заголовок не обязательно должен содержаться в файле. Заголовочный файл < iostream> включает определения, которые понадобятся вам для того, чтобы можно было использовать операторы ввода и вывода C++. Если вы не включите в программу содержимое < iostream>, то она не скомпилируется, поскольку вы используете в ней операторы, зависящие от некоторых определений, находящихся в этом файле. Существует множество заголовочных файлов, поставляемых с Visual C++, которые охватывают широкий круг возможностей. Вы познакомитесь со многими из них в процессе изучения средств языка. Оператор #include — это одна из директив препроцессора. Редактор Visual C++ распознает их и окрашивает в голубой цвет в окне редактирования. Директивы препроцессора — это команды, выполняемые на фазе предварительной обработки компилятора, которая выполняется перед тем, как ваш исходный код будет скомпилирован в объектный код, и директивы препроцессора обычно некоторым образом воздействуют на ваш исходный код перед тем, как он будет скомпилирован. Функция main () Функция main () в последнем примере состоит из заголовка main () и всего остального, начиная с открывающей фигурной скобки ({) и до соответствующей закрывающей фигурной скобки (}). Фигурные скобки заключают в себе исполняемые операторы функции, которые все вместе называются телом функции. Как вы убедитесь, любая функция состоит из заголовка, определяющего (помимо всего прочего) ее имя, за которым следует тело функции, включающее множество операторов, заключенных в пару скобок. Тело функции может не содержать в себе вообще никаких операторов — в таком случае функция ничего не делает. Функция, которая ничего не делает, может показаться излишней, но когда вы пишете крупную программу, то можете изначально отобразить полную структуру программы на функции, однако опустить код многих из них, оставляя их тела пустыми либо с минимальным содержимым. Поступая так, вы обеспечиваете возможность компиляции и выполнения всей программы, со всеми ее функциями в любой момент времени, с добавлением кода этих функций в процессе разработки. Операторы программы Каждый из операторов программы, образующих тело функции main (), завершается точкой с запятой. Этот символ помечает конец оператора, а не конец строки. Следовательно, один оператор может распространяться на несколько строк, если это помогает понять код, либо несколько операторов могут находиться в одной строке. Действие функции всегда выражается набором операторов, каждый из которых завершается точкой с запятой. Вот первый оператор в теле функции main (): int apples, oranges; // Объявление двух целочисленных переменных Этот оператор объявляет две переменные — apples и oranges. Переменная — это просто именованный фрагмент памяти компьютера, который вы можете использовать для сохранения данных, а оператор, представляющий имена одной или более переменных, называется объявлением переменной. Ключевое слово int в предыдущем примере означает, что переменные с именами apples и oranges предназначены для хранения целочисленных значений. Везде, где в программе объявляется имя новой переменной, всегда должен указываться вид данных, которые она может сохранять, и это называется типом переменной. Следующий оператор объявляет другую целочисленную переменную— fruit: int fruit; //...и еще одной Хотя и можно объявлять несколько переменных в одном операторе, как это сделано в предыдущей строке с apples и oranges, обычно лучше объявлять каждую переменную в отдельном операторе и в отдельной строке, чтобы можно было индивидуально ее прокомментировать, описывая ее назначение. Следующая строка в примере выглядит так: apples =5; oranges =6; // Присваивание начальных значений Эта строка содержит два оператора, причем каждый завершается точкой с запятой. Хорошим тоном в программировании считается размещение только одного оператора в строке, поскольку это облегчает понимание кода. Хороший тон программирования предполагает такое кодирование, которое упрощает понимание кода и снижает вероятность ошибок. Два оператора в предыдущей строке сохраняют значения 5 и б в переменных apples и oranges соответственно. Эти операторы называются операторами присваивания, потому что они присваивают новые значения переменным, а - — это операция присваивания. Далее идет такой оператор: fruit = apples + oranges; // Получить сумму Это также оператор присваивания, но несколько отличающийся, поскольку справа от операции присваивания стоит арифметическое выражение. Этот оператор складывает вместе значения, хранящиеся в переменных apples и oranges, и сохраняет результат в переменной fruit. Следующие три оператора: cout < < endl; // Начать вывод с новой строки cout < < " Апельсины - не единственные фрукты... n < < endl < < " - и всего у нас " < < fruit < < " фруктов."; cout < < endl; // Вывести символ новой строки Это операторы вывода. Первый из них посылает символ новой строки, отмеченный словом endl, в командную строку на экране. В C++ источник ввода и место назначения вывода называется потоком (stream). Имя cout специфицирует " стандартный" выходной поток, а операция < < указывает, что все, что находится справа от него, должно быть направлено в выходной поток cout. Операция < < " задает" направление потока данных — от переменной или строки, находящейся справа, в направлении выходного места назначения, расположенного слева. Таким образом, в первом операторе значение, представленное именем endl, которое означает символ новой строки, пересылается в поток, идентифицированный словом cout. В итоге данные, переданные в cout, выводятся в командной строке. Значение имени cout и операции < < определены в заголовочном файле стандартной библиотеки < iostream>, который вы добавили в код программы с помощью директивы #include в самом ее начале, cout — имя из стандартной библиотеки, а потому относится к пространству имен std. Без директивы using это имя не могло быть распознано компилятором, если только вы не указали бы его в полной квалифицированной форме — std:: cout. Поскольку cout предназначено для того, чтобы представлять стандартный выходной поток, вы не должны использовать это имя для других целей, а потому не можете применять его, например, в качестве имени переменной. Очевидно, что использование одного и того же имени для различных вещей может стать причиной путаницы. Второй из трех операторов вывода распространяется на две строки: cout < < " Апельсины - не единственные фрукты... " < < endl < < " - и всего у нас " < < fruit < < " фруктов."; Как упоминалось ранее, вы можете размещать один оператор программы в стольких строках, в скольких хотите, если это сделает код более ясным. Конец оператора всегда отмечается точкой с запятой, а не концом строки. Последовательные строки читаются и комбинируются компилятором в один оператор, пока он не обнаружит точку с запятой, означающую его конец. Конечно, это значит, что если вы забудете поставить точку с запятой в конце оператора, компилятор будет считать следующую строку частью того же оператора и соединит их вместе. Приведенный выше оператор посылает в командную строку текст " Апельсины -не единственные фрукты... ", за которым следует еще один символ новой строки (endl), потом — еще одну часть текста " - и всего у нас ", затем значение переменной fruit и завершающий текст " фруктов.". В такой последовательности сущностей, отправляемой в выходной поток, не кроется никаких проблем. Оператор выполняется слева направо, при этом каждый элемент отправляется на cout по очереди. Обратите внимание, что каждому отправленному на вывод элементу при этом предшествует собственная операция < <. Третий и последний оператор вывода просто посылает на экран еще один символ новой строки. Так эти три оператора формируют вывод программы, который вы и наблюдаете. Последний оператор программы выглядит следующим образом: return 0; // Выход из программы Этот оператор прекращает выполнение функции main () и завершает программу. Управление возвращается операционной системе. Об этом операторе будет рассказано позже. Операторы программы выполняются в том порядке, в котором они записаны, если только специальные управляющие операторы не изменяют естественный порядок их выполнения. Пробелы Пробел (whitespace) — термин, используемый в C++ для обозначения символов пробела, табуляции, новой строки, новой страницы и комментариев. Пробелы служат разделителями одной части оператора от другой и позволяют компилятору идентифицировать, где заканчивается один элемент оператора, такой как int, и начинается другой. В остальных случаях пробелы игнорируются и никакого влияния не оказывают. Посмотрим, к примеру, на следующий оператор: int fruit; //...и еще одной Должен быть, по крайней мере, один пробельный символ (обычно — пробел) между int и fruit, чтобы компилятор мог различить их, но если пробелов будет больше, они игнорируются. С другой стороны, взгляните на такой оператор: fruit = apples + oranges; // Получить сумму Ни один пробельный символ не является необходимым между fruit и -, или между = и apples, хотя при желании вы можете их включить сюда. Дело в том, что = — это не буква и не цифра, поэтому компилятор может отделить его от окружения. Аналогично никакие пробельные символы не нужны вокруг знака +, но вы можете включить их, если хотите сделать код более читабельным. Блоки операторов Вы можете заключить несколько операторов в фигурные скобки. В этом случае они образуют блок, или составной оператор. Примером блока может служить тело функции. Такой составной оператор можно воспринимать как единственный оператор. Фактически, всякий раз, когда вы помещаете отдельный оператор в C++, вы можете вместо него использовать блок операторов в фигурных скобках. Как следствие, блоки могут быть включены в другие блоки. Фактически блоки могут быть вложенными один в другой на любую глубину. Вывод в командную строку // Exercising output #include < iostream> using std:: cout; using std:: endl; int main() { int num1 = 1234, num2 = 5678; cout < < endl; // Start on a new line cout < < num1 < < num2; // Output two values cout < < endl; // End on a new line return 0; // Exit program } // Упражнение по выводу #include < iostream> using std:: cout; using std:: endl; int main() ( int numl = 1234, num2 =5678; cout < < endl; // Начать новую строку
cout « numl « num2; // Вывести две переменные cout « endl; // Завершить строку return 0; // Завершить программу } Популярное:
|
Последнее изменение этой страницы: 2016-08-31; Просмотров: 590; Нарушение авторского права страницы