У некоторых переход от визуального создания программ к консольным приложениям вызвал определенные трудности. Но дело в том, что для того, чтобы создавать какие-то законченные графические программы, необходимо уже владеть определенными навыками составления программного кода. Создать форму с кнопочками и картинками легко, как вы убедились. На самом деле и запрограммировать определенную логику ее поведения немногим сложнее, но для этого придется прибегать к довольно специфическим вещам, связанным с особенностями работы конкретной оболочки. То есть чтобы получить - увидеть результат работы, предварительно надо познакомиться с элементами управления (поля ввода и вывода, списки, таблицы итд) , а знакомство с ними подразумевает как раз определенное понимание программирования.
Поэтому мы на время перешли к консольным, текстовым программам. Там нет никаких специфические требований к общению с пользователем - только ввод с клавиатуры и вывод на экран строчки.
Что касается версий. Visual Studio (Microsoft Visual Studio ) - это единая среда, в которую входят и Visual C++ и Visual Basic. То есть, говоря Visual Studio, я подразумеваю Visual C++ или Visual Basic - в зависимости от контекста :) Слово Microsoft означает компанию-производителя.
Delphi (Borland Delphi) - это система программирования на Паскале. C++Builder (Borland C++Builder ) - это система программирования на Си++ (схожая с Visual C++). Слово Borland означает компанию-производителя.
Зачем разные системы для Си++? Потому что последней версии Visual C++ .NET многие не могут найти, а в предыдущей (Visual C++ 6) полноценного визуального дизайнера форм нету. А есть он в C++Builder.
По Бейсику. Судя по всему, в старой версии VB6 (Visual Basic 6) простой поддержки в консольных программах ввода и вывода с клавиатуры нету (или я ошибаюсь?). Поэтому те, кто решил изучать Бейсик, как самый простой язык, в реальности сталкиваются с тем, что воплощение его в жизни едва ли не самое сложное :) Могу только посоветовать либо изучать текущий этап с консольными программами теоретически (благо здесь все будет прозрачно; правда, упражнения не удастся делать), либо найти Visual Studio .NET 2003, либо попробовать другой язык.
Теперь снова немного расширим нашу программу, добавив в нее команду вывода на экран небольшого приветствия. Поместим ее перед командой ожидания нажатия клавиши - по логике :) А что будет, если сначала команду ожидания нажатия клавиши оставить, а за ней только разместить команду вывода?
Важно! Команды программы выполняются последовательно, одна за другой. Сверху вниз и слева направо.
Эта последовательность выполнения в ряде случаев может меняться, но только елси об этом указано явно. Например, встречается команда "пропустить три следующие команды". Тогда три следующие команды и пропускаются. Но опять-таки пропускаются последовательно, одна за другой :)
В Delphi командой вывода будет команда WriteLn (сокращение от английского Write Line - печатать строку). За названием команды следует в круглых скобках строка, которая и выводится на экран. Эта строка заключается в одинарные кавычки. Вот так например:
WriteLn('Привет. Это я!');
А вот как вся наша программа запишется:
{$APPTYPE CONSOLE}
begin
WriteLn('Привет. Это я!');
ReadLn;
end.
Только работать она не будет :) Вернее, будет, но не так, как хотелось бы. Строчка на экран выведется, но не 'Привет. Это я!', а абракадаброй. Почему? Потому что в консольной программе кодировка не Windows, а DOS. И русский текст окажется перекодированным неправильно. Чтобы обойти этот недостаток, можно в принципе исходный текст нашей программы перекодировать в DOS-кодировку, но это неудобно конечно. Поэтому будем пока только английскими буквами пользоваться. Допустим, так:
WriteLn('Hi. I am!');
Между отдельными командами можно вставлять произвольное число пустых строк. Сами команды можно сдвигать с помощью пробелов, а некоторые части внутри команд также можно отделять друг от друга пробелами. Хотя название самой команды (WriteLn) делить на части, конечно, нельзя. Команды, кроме того, можно размещать на одной строчке (разделяя символом ";"), но это плохой стиль составления программ.
WriteLn ( 'Hi. I am!' ) ; ReadLn ;
На других языках названия команд и формы их записи будут немного отличаться. Ну как отличаются разные естественные языки. Одно и то же слово может записываться совершенно по разному, потом, строение фразы определяется конкретной грамматикой, пунктуация может разниться итд. Но основы схожи почти везде.
В Си++ команда вывода строки на экран называется cputs (c - console, put - положить, s - string). Только в Си++ строки берутся не в одинарные, а в двойные кавычки. Кроме того, команда Паскаля WriteLn сама, автоматически вставляет символ новой строки после выводимого текста (или перед ним, не помню точно), а в Си++ такой символ надо указывать явно. Так как он невидим, очевидно, то для его визуализации принято решение использовать два символа, вот так: "\n". Соответственно, вариант команды вывода строки 'Hi. I am' будет выглядеть следующим образом: cputs("Hi. I am.\n");
а вся программа - так (это для Borland C++Builder):
#include <conio.h>
int main()
{
cputs("Hi. I am.\n");
getch();
}
Для тех, кто Visual C++ использует, запись будет такой (только еще одна строчка первая добавилась, дополнительная подключаемая библиотека):
#include "stdafx.h"
#include <conio.h>
int main()
{
cputs("Hi. I am.\n");
getch();
}
Кстати, по поводу названия stdafx.
stdafx означает standard application frameworks, что сокращённо звучит как
stdafx. Это всё уходит к временам программирования на первых версиях MFC.
Насколько я знаю, в те времена как таковых MFC ещё не было, а был
Application Framework, который впоследствии послужил базой для MFC. AFX
служил первой обёрткой над Win16 для создания приложений для Windows 3.1 и
иже с ними.
Eldar
Остается многострадальный Бейсик :) В VB .NET (версия Visual Basic .NET) команда вывода строки (строка в Бейсике, как и в Си++, берется в двойные кавычки) так выглядит: Console.WriteLine("Hi. I am."). А вся программа так:
Module Module1
Sub Main()
Console.WriteLine("Hi. I am.")
Console.ReadLine()
End Sub
End Module
Работают все эти программы на разных языках одинаково, конечно. Можете проверить :)
Задание. Составьте программу на выбранном вами языке так, чтобы она выводила не одну строчку, а несколько, причем после каждой выведенной строки ожидала нажатия клавиши. Для этого, очевидно, надо чередовать несколько раз команды вывода и ввода.
Большое спасибо всем, кто присылает ответы, отчеты, рекомендации! Очень много замечательных рассказов, примеров, но к сожалению не хватает ресурсов все ваши труды как следует оформить и разместить в рассылке и на сайте. Но потихонечку все это конечно опубликуется, не сомневайтесь.
В ночь на 1-е октября 2004 г., напоминаю, заканчивается бесплатный прием на платные курсы: