Область применения:Visual Studio
Visual Studio для Mac
Visual Studio Code
Способ запуска программы зависит от того, с чего вы начинаете, от типа программы и от необходимости использовать отладчик. В самом простом случае для сборки и запуска открытого проекта в Visual Studio выполните следующие действия.
- Нажмите клавишу F5, выберите Отладка>Начать с отладки в меню Visual Studio или выберите зеленую стрелку Запуск и имя проекта на панели инструментов Visual Studio.
- Для запуска без отладки нажмите клавиши CTRL+F5 или выберите Отладка>Запуск без отладки в меню Visual Studio.
Язык Си для начинающих / #1 — Введение в язык Си
Запуск из проекта
Вы можете запустить проект C# или CSPROJ-файл, если это готовая к запуску программа. Если проект содержит файл C# с методом Main , а его выходные данные представляют собой исполняемый файл (EXE), скорее всего, он запустится в случае успешной сборки. Для более новых версий C# не требуется Main метод; вместо этого выполнение программ начинается с инструкций верхнего уровня. См . статью Программы без методов Main.
- Если код программы уже находится в проекте Visual Studio, откройте проект. Для этого дважды щелкните CSPROJ-файл в проводнике Windows или выберите пункт Открыть проект в Visual Studio, найдите CSPROJ-файл и выберите его.
- После загрузки проекта в Visual Studio, если решение Visual Studio содержит несколько проектов, убедитесь, что для проекта задан метод Main , чтоб он считался запускаемым проектом. Чтобы задать запускаемый проект, щелкните имя проекта или узел правой кнопкой мыши в Обозревателе решений, затем выберите пункт Назначить запускаемым проектом в контекстном меню.
Запуск из кода
Если вы выполняете запуск из листинга кода, файла кода или небольшого числа файлов, сначала убедитесь, что запускаемый код происходит из надежного источника и является запускаемой программой. Любое приложение с методом Main , вероятно, является запускаемой программой, но в текущей версии C# также могут выполняться программы без Main методов с операторами верхнего уровня. Вы можете использовать шаблон консольного приложения, чтобы создать проект для работы с приложением в Visual Studio.
Язык C за 100 секунд [перевод на русский]
Листинг кода для отдельного файла
- Запустите Visual Studio и откройте пустой проект консольного приложения C#.
- Замените весь код в CS-файле проекта содержимым листинга кода или файла.
- Переименуйте CS-файл проекта в соответствии с именем файла кода.
Несколько листингов кода или файлов на диске
- Запустите Visual Studio и создайте новый проект соответствующего типа. Если вы не уверены, используйте консольное приложение C#.
- В новом проекте замените весь код в файле кода проекта на содержимое первого листинга кода или файла.
- Переименуйте файл кода проекта в соответствии с именем файла кода.
- Для каждого оставшегося файла кода сделайте следующее.
- Щелкните правой кнопкой мыши узел проекта в Обозревателе решений и выберите пункт Добавить>Существующий элемент или выберите проект и нажмите клавиши SHIFT+ALT+A.
- Найдите и выберите файл кода, чтобы импортировать его в проект.
Несколько файлов в папке
Если у вас есть папка с большим количеством файлов, сначала найдите файл проекта или решения. Программы, создаваемые Visual Studio, содержат файлы проекта и решения. В проводнике Windows найдите файлы с расширением .csproj или .sln. Дважды щелкните CSPROJ-файл, чтобы открыть его в Visual Studio. См. раздел Запуск из проекта или решения Visual Studio.
Если код находится в другой среде разработки, файл проекта отсутствует. Откройте папку, выбрав Открыть>Папка в Visual Studio. См. раздел Разработка кода без использования проектов и решений.
Запуск из репозитория Azure DevOps или GitHub
Если код, который вы хотите запустить, находится в GitHub или в репозитории Azure DevOps, можно использовать Visual Studio, чтобы открыть проект непосредственно из репозитория. См. раздел Открытие проекта из репозитория.
Запуск программы
Чтобы начать сборку программы, нажмите зеленую стрелку запуска на панели инструментов Visual Studio либо нажмите клавиши F5 или CTRL+F5. С помощью кнопки Запуск или F5 можно запустить программу в отладчике.
Visual Studio пытается выполнить сборку кода в проекте и запустить его. Если сборка завершится неудачно, ознакомьтесь со следующими разделами, чтобы понять, как успешно собрать проект.
Устранение неполадок
Код может содержать ошибки. Или код может быть правильным, но, возможно, он зависит от отсутствующих сборок или пакетов NuGet или предназначен для другой версии .NET. В таких случаях вы можете легко исправить сборку.
Добавление ссылок
Для успешной сборки код должен быть правильным и иметь правильные ссылки на библиотеки или другие зависимости. Красные волнистые линии в коде или записи в списке ошибок показывают ошибки еще перед компиляцией и запуском программы. Если возникают ошибки, связанные с неразрешенными именами, возможно, потребуется добавить ссылку и/или директиву using . Если код ссылается на отсутствующие сборки или пакеты NuGet, необходимо добавить эти ссылки в проект.
Visual Studio пытается помочь определить отсутствующие ссылки. Если имя не разрешено, в редакторе появляется значок лампочки. Если щелкнуть лампочку, можно увидеть некоторые рекомендации по устранению проблемы. Возможные исправления:
- Добавление директивы using
- Добавление ссылки на сборку
- Установка пакета NuGet
Добавление директивы using
Ниже приведен пример отсутствующей директивы using . Добавьте using System; в начало файла кода, чтобы разрешить неразрешенное имя Console .
Более новые версии C# поддерживают директивы неявного использования для некоторых часто используемых пространств имен, поэтому, если вы выбрали этот параметр при создании проекта, они вам не нужны.
Добавление ссылки на сборку
Ссылки .NET могут быть сборками или пакетами NuGet. В исходном коде издатель или автор обычно объясняет, какие сборки требуются коду и от каких пакетов он зависит. Чтобы добавить ссылку в проект вручную, в Обозревателе решений щелкните правой кнопкой мыши узел Ссылки и выберите команду Добавить ссылку. В диспетчере ссылок найдите и добавьте требуемую сборку.
Вы можете найти сборки и добавить ссылки, следуя инструкциям в разделе Добавление и удаление ссылок с помощью диспетчера ссылок.
Добавление пакета NuGet
Если Visual Studio обнаруживает отсутствующий пакет NuGet, появляется лампочка, позволяющая установить его.
Если это не решает проблему и Visual Studio не удается найти пакет, попробуйте выполнить поиск в Интернете. См. раздел Установка и использование пакета NuGet в Visual Studio.
Использование правильной версии .NET
Так как разные версии .NET Framework обеспечивают некоторую степень обратной совместимости, более новая платформа может выполнять код, написанный для более старой платформы, без каких-либо изменений. Но иногда требуется выбрать определенную версию платформа .NET Framework. Вам может потребоваться установить определенную версию .NET Framework или .NET Core. См. раздел Изменение Visual Studio.
Сведения об изменении целевой версии платформа .NET Framework см. в статье Изменение целевой платформы. Дополнительные сведения см. в разделе Устранение неполадок, связанных с настройкой для определенных версий платформы .NET Framework.
Следующие шаги
- Изучите среду разработки Visual tudio, прочитав раздел Добро пожаловать в интегрированную среду разработки Visual Studio.
- Создание первого приложения C#.
Источник: learn.microsoft.com
Структура программы и описание функций и операторов
Структуру классов программы очень удобно просмотреть в закладке «Class View» среды MS Visual Studio 2008. В этой среде автоматизирован процесс построения диаграммы классов для того, чтобы наглядней можно было проследить наследование (см. рисунок — 5).
Рисунок 5 — Диаграмма классов программы
fRead — данная подпрограмма производит построчное считывание информации из текстового файла. Считанная информация записывается в строковый массив и выводится на экран.
fWrite — подпрограмма производит выгрузку обработанного текста в файл, а также вывод результата транслирования на экран.
fMain — производит поиск и замену операторных скобок, а также вставляет функцию «void main()».
fComment — производит поиск и замену комментариев, в соответствии с синтаксисом языка программирования С++.
fvar — данная подпрограмма производит поиск и обработку объявления переменных типа integer, а также объявления массивов. В данной подпрограмме также реализован поиск и замена оператора присваивания.
fWhile — данная подпрограмма ищет и модифицирует оператор цикла «while», а также основные логические операторы приводит в соответствие с синтаксисом языка С++.
CString CodeP[n] — Строковый массив, в который с помощью функции fRead() помещается исходный код на языке Паскаль, который содержится в текстовом файле
CString CodeC[n] — Строковый массив, который содержит результат транслирования исходного кода на языке Паскаль в исходный код на языке С++. Содержимое этого массива построчно выводится в файл.
CString* pCodeC — Указатель на строку в строковом массиве. Передается функциям в качестве аргумента.
CString* pCodeP — Указатель на строку в строковом массиве. Передается функциям в качестве аргумента.
CString szOut — Результирующая строка. Необходима для вывода содержимого исходного файла и результатов транслирования в диалоговое окно программы. Функции и процедуры:
ATL::CString::Append(CString str) — Данная функция добавляет строку str в конец текущей строки.
ATL::CString::AppendChar(char chr) — Данная функция добавляет символ chr в конец текущей строки.
ATL::CString::Find(CString str) — Ищет первое совпадение в текущей строке с символами строки str. Функция возвращает порядковый номер первого символа совпавшей комбинации.
ATL::CString::Delete(int k, const 1) — Удаляет колличество символов, указонное во втором аргументе, начиная с k-го символа.
ATL::CString::Insert(int k, CString str) — Вставляет подстроку str в текущую строку начиная с символа k.
ATL::CString::GetLength() — Возвращает длину текущей строки.
Листинг программы
Заголовочный файл приложения p2c.h
// p2c.h : main header file for the PROJECT_NAME application
#error «include ‘stdafx.h’ before including this file for PCH»
#include «resource.h»// main symbols
// See p2c.cpp for the implementation of this class
class Cp2cApp : public CWinApp
virtual BOOL InitInstance();
extern Cp2cApp theApp;
Заголовочный файл диалогового окна p2cDlg.h
/ p2cDlg.h : header file
class Cp2cDlg : public CDialog
Cp2cDlg(CWnd* pParent = NULL);// standard constructor
CString CodeC[100];//Объявляем строковой массив из 100 элементов, для хранения исходного кода на С++.
CString* pCodeP;//Указатель на массив CodeC
CString CodeP[100];//Объявляем строковой массив из 100 элементов, для хранения исходного кода на Паскале.
CString* pCodeC;//Указатель на массив CodeP
virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support
// Generated message map functions
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
void fRead(UINT nID, CString* String);
void fWrite(UINT nID, CString* String);
afx_msg void OnBnClickedButton1();
void fComment(CString* String);
void fvar(CString* String);
void fMain(CString* String);
void fWhile(CString* String);
afx_msg void OnBnClickedButton2();
Исполняющий файл приложения p2c.cpp
// p2c.cpp : Defines the class behaviors for the application.
#define new DEBUG_NEW
// TODO: add construction code here,
// Place all significant initialization in InitInstance
// The one and only Cp2cApp object
// InitCommonControlsEx() is required on Windows XP if an application
// manifest specifies use of ComCtl32.dll version 6 or later to enable
// visual styles. Otherwise, any window creation will fail.
// Set this to include all the common control classes you want to use
// in your application.
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need
// Change the registry key under which our settings are stored
// TODO: You should modify this string to be something appropriate
// such as the name of your company or organization
SetRegistryKey(_T(«Local AppWizard-Generated Applications»));
INT_PTR nResponse = dlg.DoModal();
/*if (nResponse == IDOK)
// TODO: Place code here to handle when the dialog is
// dismissed with OK
else if (nResponse == IDCANCEL)
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application’s message pump.
Исполняющий файл диалогового окна p2cDlg.cpp
// p2cDlg.cpp : implementation file
#define new DEBUG_NEW
Cp2cDlg::Cp2cDlg(CWnd* pParent /*=NULL*/)
pCodeP=//Создаем указатели на нулевые строки массивов.
void Cp2cDlg::DoDataExchange(CDataExchange* pDX)
// Cp2cDlg message handlers
fRead(IDC_EDIT1,pCodeP);//Первый аргумент — элемент диалога,
//в который будет выводиться текст, второй — указатель на массив строк.
// Set the icon for this dialog. The framework does this automatically
// when the application’s main window is not a dialog
SetIcon(m_hIcon, TRUE);// Set big icon
SetIcon(m_hIcon, FALSE);// Set small icon
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
int x = (rect.Width() — cxIcon + 1) / 2;
int y = (rect.Height() — cyIcon + 1) / 2;
dc.DrawIcon(x, y, m_hIcon);
// The system calls this function to obtain the cursor to display while the user drags
// the minimized window.
void Cp2cDlg::OnBnClickedButton1()//Обработчик нажатия на кнопку.
while (CodeP[i]!=»»)//Пока элемент массива не пустой
CString* pTemp=//Создаем временный указатель на текущую строку.
fComment(pTemp);//Запускаем функции, передавая в кач-ве аргумента указатель на текущую строку.
fWrite(IDC_EDIT2,pCodeC);//Вызываем функцию вывода результата и записи его в файл
void Cp2cDlg::fRead(UINT nID, CString* String)//Функция производит чтение строк из файла.
//Она же построчно заносит содержимое файла в строковый массив.
CString szOut=»»; //Создаем пустую строку, для вывода результата.
CStdioFile Inputfile; //Создаем объект для файла.
CFileException FileExc; //Объект исключений для файла
UINT nOpenFlags; //Флаг открытия
CString s; //Временная строка
//Если файл не открывается
if (!Inputfile.Open(«CodePas.txt», nOpenFlags, //Выводим стандартное сообщение об ошибке
//Пока возможно чтение строки.
String[i]=s;//Присваиваем строку из файла элементу строкового массива.
szOut.Append(String[i]);//Добавляем текущую строку в строку результата.
szOut.AppendChar(»);//Добавляем разрывы строки
szOut.AppendChar(»);//Добавляем разрывы строки
Inputfile.Close();//Закрываем текстовый файл.
SetDlgItemText(nID,szOut);//Выводим текст в элемент диалогового окна.
void Cp2cDlg::fWrite(UINT nID, CString* String)//Функция производит запись результата в файл.
CString szOut=»»;//Создаем пустую строку, для вывода результата.
CStdioFile Outputfile;//Создаем объект для файла.
CFileException FileExc; //Объект исключений для файла
UINT nOpenFlags;//Флаг открытия
nOpenFlags = CFile::modeWrite | CFile::modeCreate;//Создаем файл
//Если файл не открывается
if (!Outputfile.Open(«CodeC.txt», nOpenFlags, //Выводим стандартное сообщение об ошибке
while (String[i]!=»»)//Пока строка не пуста
szOut.Append(String[i]);//Добавляем текущую строку в строку результата.
szOut.AppendChar(»);//Добавляем разрывы строки
szOut.AppendChar(»);//Добавляем разрывы строки
Outputfile.WriteString(String[i]+»);//Записываем строку в файл, добавляяв конец.
SetDlgItemText(nID,szOut);//Выводим текст в элемент диалогового окна.
void Cp2cDlg::fComment(CString* String)//Функция для обработки комментариев.
//то значение будет больше нуля.
if (nach>=0)//Если символ присутствует
String->Insert(nach,’/’);//Вставляем необходимые символы
String->Delete(nach+2,1);//Удаляем скобки комментариев на языке Паскаль.
kon=String->Find(«>»);//Аналогичные действия, только для закрывающихся скобок.
nach=String->Find(«(*»);//Выполняем аналогичные действия с другим видом комментариев на Паскале.
void Cp2cDlg::fvar(CString* String)//Функция обрабатывает объявление переменных и массива целочисленного типа и оператора присваивания.
int rav=-1,inte=-1,arr=-1,var=-1;//Переменные, в которых будет храниться порядковый номер определенных комбинаций символов.
rav=String->Find(«: var»);//Ищем объявление переменных
String->Delete(rav,2);//Удаляем оператор присваивания
String->Delete(var,4);//Удаляем оператор объявления переменных VAR.
inte=String->Find(«integer»);//Ищем объявление целочисленного типа
String->Delete(inte,7);//Удаляем объявление целочисленного типа
String->Delete(String->Find(«:»));//Удаляем лишние символы
String->Insert(0,»int «);//Вставляем в начало строки объявление целочисленного типа для С++
arr=String->Find(«array»);//Ищем объявление массива
String->Delete(String->Find(«of»),2);//Удаляем лишние символы
void Cp2cDlg::fMain(CString* String)//Функция ищет и заменяет операторные скобки и объявляет функцию void main()
int prg=-1,beg=-1,end=-1,end1=-1; //Переменные, в которых будет храниться порядковый номер определенных комбинаций символов.
prg=String->Find(«program»);//Производим поиск ключевых слов
String->Append(«void main(void)»);//Вставляем объявление ф-ции void main()
String->Delete(beg,5);//Удаляем операторные скобки на языке Паскаль
String->Delete(end,4);//Удаляем операторные скобки на языке Паскаль
String->Insert(end,»>»);//Вставляем операторные скобки на языке С++
String->Delete(end,4);//Удаляем операторные скобки на языке Паскаль
String->Insert(end,»>»);//Вставляем операторные скобки на языке С++
void Cp2cDlg::fWhile(CString* String)//Функция обрабатывает цикл while и логические операторы
int wh=-1,le1=-1,le2=-1;//Переменные, в которых будет храниться порядковый номер определенных комбинаций символов.
wh=String->Find(«while»);//Производим поиск ключевых слов
le1=String->Find(«<>»);//Производим поиск логического оператора «не равно»
String->Insert(String->Find(«<>»),»!=»);//Вставляем логический оператор «не равно» на языке С++
String->Delete(String->Find(«<>»),2);//Удаляем логический оператор «не равно» на языке Паскаль
le2=String->Find(«=»);//Производим поиск логического оператора «равно»
String->Insert(le2,»=»);//Вставляем логический оператор «равно» на языке С++
OnCancel();//Закрываем диалоговое окно программы.
Источник: studentopedia.ru
Считать значения из input.txt и записать в output.txt на C++
На олимпиадах по программированию для ввода данных в программу используют, как правило, файл с названием input.txt(содержит входные данные), а для вывода используется output.txt(содержит все выходные данные). В данной статье мы разберем, как нам брать данные из файла input.txt и записывать в output.txt.
Из input.txt в output.txt
Может показаться, что это неудобно, и проще всего организовать ввод данных через консоль, попросив об этом пользователя примерно таким сообщением «Введите значение N:». Однако, использование файлов input.txt и output.txt позволяет автоматизировать проверку ответа участника олимпиады, что в разы ускоряет подведение итогов.
Если Вы любите решать олимпиадные задачи, то Вам просто необходимо иметь шаблон такой программы, чтобы каждый раз не реализовывать её. Ежели Вы впервые столкнулись с этим, то мы сейчас разберем, как это всё делается.