Рассмотрим каждую строку заготовки программы (листинг 1.1). В зависимости от версии оболочки вид заготовки может немного варьироваться.
using System;
namespace ConsoleApplication1
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: Add code to start application here
//
}
}
}
Листинг 1.1. Заготовка консольной программы (html, txt)
Директива using System разрешает использовать имена стандартных классов из пространства имен System непосредственно (без указания имени пространства).
Ключевое слово namespace создает для проекта собственное пространство имен, названное по умолчанию ConsoleApplication1. Это сделано для того, чтобы можно было давать программным объектам имена, не заботясь о том, что они могут совпасть с именами в других пространствах имен.
C# — объектно-ориентированный язык, поэтому написанная на нем программа представляет собой совокупность взаимодействующих между собой классов. В нашей заготовке программы всего один класс, которому по умолчанию задано имя Class1. Описание класса начинается с ключевого слова class, за которым следуют его имя и далее в фигурных скобках — список элементов класса (его данных и функций, называемых также методами).
Внимание
Фигурные скобки являются важным элементом синтаксиса. Каждой открывающей скобке соответствует своя закрывающая, которая обычно располагается ниже по тексту с тем же отступом. Эти скобки ограничивают блок, внутри которого могут располагаться другие блоки, вложенные в него, как матрешки. Блок может применяться в любом месте, где допускается отдельный оператор.
В данном случае внутри класса только один элемент — метод Main. Каждое приложение должно содержать метод Main — с него начинается выполнение программы. Все методы описываются по единым правилам.
Упрощенный синтаксис метода:
[ спецификаторы ] тип имя_метода ( [ параметры ] )
{
тело метода: действия, выполняемые методом
}
Таким образом, любой метод должен иметь тип, имя и тело, остальные части описания являются необязательными. Среда заботливо поместила внутрь метода Main комментарий:
// TODO: Add code to start application here
Это означает: "Добавьте сюда код, выполняемый при запуске приложения".
Запуск консольного приложения лучше всего выполнять с помощью клавиш Ctrl + F5 (или командой меню Debug Start Without Debugging ). Компилятор может обнаружить в тексте программы синтаксические ошибки. Он сообщает об этом в окне, расположенном в нижней части экрана.
В отличие от традиционного кода на C и C++, код C# не компилируется непосредственно в машинный язык. Компилятор C# преобразует исходный код C# в код на промежуточном языке IL (MIcrosoft Intermediate Language). Файлы IL (или сокращенно IL) называются сборками. Файлы IL создаются всеми языками на основе общеязыковой среды выполнения CLR (CLR – Common Language Runtime). Среда CLR поддерживает языки Visual C#, Visual C++, Visual J# и Visual Basic. Созданные файлы IL в большинстве случаев практически идентичны во многих языках, что упрощает сочетание различных программных компонентов, написанных на разных языках.
На следующей схеме показано преобразование написанного кода C# в исполняемое приложение.
Для демонстрации примера вида и структуры метаданных используем программу на C# HelloConsole:
При компиляции программы в CIL создается сборка, сохраняемая на диске как управляемый файл HelloConsole.exe. Из сборки при исполнении генерируется исполняемый бинарный файл, который исполняется на-лету.
Внимание. Сам бинарный файл на диске не сохраняется.
Переменная – это память, в которую можно записывать различные значения. Чаще всего этой памяти присваивается в соответствие имя.
Имя переменной может состоять как из одной буквы, так и из нескольких букв.
Тип переменной – тип значения, которое можно записать в переменную (в память).
Тип данных – это характеристика диапазона значений, которые могут принимать переменные, относящиеся к этому типу данных.
Рассмотрим средства позволяющие выводить на экран сообщения и значения переменных.
Процедуры write и writeln,как раз и предназначены для этого. Они равнозначны.
После слова writeв скобках задается список переменных, значения которых должны быть выведены. Кроме имен переменных в список можно включить сообщение – текст, заключенный в кавычки.
Инструкция writelnотличается от инструкцииwriteтолько тем, что после вывода сообщения или значений переменных курсор переводится в начало следующей строки.
Инструкции read и readln
Инструкция read предназначена для ввода с клавиатуры значений переменных (исходных данных).
При выполнении инструкции readпроисходит следующее:
1. Программа приостанавливает свою работу и ждет, пока на клавиатуре будут набраны нужные данные и нажата клавиша <ENTER>.
2. После нажатия клавиши <ENTER>. введенное значение присваивается переменной, имя которой указано в инструкции.
Одна инструкция readпозволяет получить значения нескольких переменных. При этом вводимые числа должны быть набраны одной строкой и разделены пробелами.
Инструкция readlnотличается от инструкции readтем, что после выделения очередного числа из введенной с клавиатуры строки и присвоения его последней переменной из списка readlnкурсор автоматически переходит на другую строчку.
Перед каждой инструкцией read или readlnследует располагать инструкцию writeln или write, для того чтобы подсказать пользователю какие данные от него ждет программа.
Блок-схемы. (самостоятельно)
Давайте сразу зададим какой-нибудь простой пример, на котором попробуем расписать логику его решения. Допустим, нам надо получить произведение двух чисел. В человеческой логике мы должны выполнить следующие операции:
1. Старт.
2. Ввести число.
3. Ввести число 2.
4. Умножить число 1 на число 2.
5. Вывести результат.
Простейшая и подробная логика, которой оперирует человек. Но машина немного сложнее и в её логике нужно рассуждать немного по-другому. Для отображения машинной логики удобней перечисления шагов не удобно, поэтому давайте знакомится с блок схемами на этом примере.
Блок схемы принято чертить различными квадратами, овалами и прямоугольниками.
Вот основные типы используемых блоков
.
Стандартные блок-схемы
Процесс
Обозначает одно или несколько действий, изменяющих значение или форму представления данных. Операция записывается внутри блока или с помощью комментария.
Ввод/вывод
Ввод исходных данных и вывод результата. Внутри параллелограмма пишется "ввод" или "печать" и перечисляются переменные, подлежащие вводу/выводу.
Начало алгоритма
Обозначает входы в схему алгоритма и выходы из неё. Этим блоком начинается и заканчивается каждая схема алгоритма.
Конец алгоритма
Ветвление
Проверка условия. Обозначает переход управления по условию. В блоке указывается вопрос, условие, сравнение. Стрелки, помечаются ответами (да, нет).
Предопределенный процесс
Вызов подпрограммы в виде процедуры или функции.
Обозначает вычисление по подпрограмме.
Начало цикла
Указывает начало циклической конструкции. Внутри записываются начальное и граничное значения, а также правило изменения параметра цикла.
Комментарий
Пояснения, формулы.
| |
a, b – размер блока
ПРОЦЕСС
( БЛОК ОБРАБОТКИ )
ВВОД-
ВЫВОД
НАЧАЛО
КОНЕЦ
РЕШЕНИЕ
ПРЕДОПРЕДЕЛЕННЫЙ ПРОЦЕСС
( ВЫЗОВ МОДУЛЯ )
МОДИФИКАЦИЯ
КОММЕНТАРИЙ
| |
а = 10; 15; 20 . . . мм;