Рис. 1.22. Пример подсказки
Трансляция
Процесс преобразования исходной программы в выполняемую называется трансляцией. Во время трансляции исходная программа, то есть программа, записанная на языке программирования, преобразуется в выполняемую программу, представляющую собой последовательность двоичных чисел, кодирующих данные и команды процессора. Здесь следует обратить внимание на то, что, строго говоря, выполняемая программа, создаваемая транслятором C#, содержит не команды процессора, а некоторое промежуточное представление программы, которое в процессе запуска программы (загрузки программы в операционную память компьютера) преобразуется в команды процессора.
Процесс создания выполняемого файла С# программы может быть представлен как последовательность этапов предварительной обработки, компиляции и компоновки (рис. ).
Рис. Процесс создания выполняемого файла
Препроцессор выполняет предварительную обработку исходной программы. Он просматривает текст исходной программы и выполняет директивы, которые в ней находятся (директива – инструкция, начинающаяся символом #). Если с исходной программе директив препроцессору нет, то обработка не выполняется и текст программы передается компилятору без изменений.
Компилятор обрабатывает сформированную препроцессором программу: проверяет ее на наличие синтаксических и семантических. При обнаружении синтаксической ошибки, например, необъявленного идентификатора (переменной), выводится сообщение об ошибке. При обнаружении семантической ошибки, например переменной, которая объявлена, но в программе не используется, выводится предупреждение.
Если в программе нет синтаксических ошибок, то запускается процесс компоновки. Компоновщик собирает выполняемую программу – добавляет к сформированному компилятором коду код других модулей.
Чтобы активизировать процесс создания выполняемого файла, надо в меню Сборка выбрать команду Собрать решение. Если в программе ошибок нет, то в окно Вывод будет выведено сообщение об успешном завершении процесса сборки (рис . ).
Рис. Пример сообщения об успешной сборке программы
Если в программе есть ошибки, то выводится сообщение об ошибках, предупреждения и информация о неудачном завершении процесса сборки (рис. ).
Рис. Пример сообщения о неуспешной сборке программы
Кроме этого, в окне редактора кода выделяются фрагменты программы, содержащие ошибки (они подчеркиваются красной волнистой чертой), а также “подозрительные” фрагменты (подчеркиваются зеленой волнистой чертой), не являющиеся ошибками, но на которые следует обратить внимание. Именно при обнаружении таких фрагментов компилятор выводит предупреждения.
Ошибки
Выполняемая программа (файл exe) создается только в том случае, если в исходной программе нет синтаксических ошибок. Если в программе есть ошибки, то программист должен их устранить. В табл. приведены некоторые сообщения о типичных ошибках.
Таблица.. Сообщения об ошибках
Сообщение
Возможная причина
Ошибка – Имя … не существует в текущем контексте
Используется необъявленная переменная или имя переменной в выражении не соответствует имени, указанному в инструкции объявления переменной. Например, в программе объявлена переменная sum, а в выражении указана переменная summ или Sum.
Предупреждение – Переменной … присвоено начальное значение, но оно не используется.
Переменная объявлена и ей присвоено начальное значение, но в программе она не используется или в выражении, где предполагается использование этой переменной, имя записано неправильно (в этом случае, скорее всего, помимо предупреждения будет выведено одно или несколько сообщений об использование несуществующего имени). Например, объявлена переменная Weight а выражении, в котором предполагается ее использование, вместо Weight написано weight
Процесс устранения ошибок носит итерационный характер. Обычно сначала устраняются наиболее очевидные ошибки, например, объявляются не объявленные переменные или если переменная объявлена, исправляются имена в выражениях, так, чтобы имена переменных в выражениях, соответствовали именам переменных в инструкциях объявления. Следует обратить внимание на то, что одна ошибка в программе может “тащить” за собой несколько других. Например, если в рассматриваемой программе вычисления среднего веса в инструкции объявления переменной w заменить w на W, то компилятор выведет сообщения о трех ошибках (так как в трех местах программы используется имя w) и предупреждение о неиспользуемой переменной W. Обратная замена W на w, т.е. одно исправление, устраняет три ошибки и предупреждение.
Запуск программы
Если в программе нет ошибок, то ее можно запустить. Сделать это можно несколькими способами: в меню Отладка выбрать команду Начать отладку или Запуск без отладки; сделать щелчок на кнопке Пуск (рис. ); нажать <F5>.
Рис. . Кнопка Пуск
Следует обратить внимание, если с последней компиляции в программу были внесены изменения, то при запуске сначала активизируется процесс компиляции, затем, если в программе ошибок нет, программа запускается.
Окно консоли, в котором работает программа вычисления среднего веса приведено на рис. . Обратите внимание, при вводе дробных значений в качестве десятичного разделителя введена запятая.
Рис. . Окно программы Средний вес
Исключения
Если в программе компилятор не выявил ошибок, это еще не значит, что программа будет всегда работать правильно. Например, если в программе Средний вес при вводе значения веса в качестве десятичного разделителя вместо запятой ввести точку, то после нажатия <Enter> программа сначала ненадолго “задумается”, затем станет активным окно редактора кода, в котором будет выведено сообщение о возникновении исключения (ошибки, возникающие во время работы программы, называют исключениями; Exception – исключение), также будет выделена строка, содержащая команду, при выполнении которой исключение возникло (рис .).
Глава 2. Типы данных, переменная, инструкция присваивания
Переменная
Чтобы программа могла оперировать с данными, они должны находиться в оперативной памяти компьютера. Переменная – это область памяти, в которой находятся данные.
Каждая переменная программы должна иметь имя. В качестве имени переменной можно использовать последовательность, состоящую из букв латинского алфавита, цифр, а также символов тире и подчеркивание. Первым символом в имени переменной должна быть буква или символ “подчеркивание”. Пробелы в именах переменных использовать нельзя.
Следует обратить внимание, на то, что компилятор С# различает прописные и строчные буквы, поэтому, например, имена Name, name и NAME обозначают разные переменные.
В соответствие с правилами хорошего стиля программирования, имя переменной должно быть логически связано с ее назначением. Например, если переменные предназначены для хранения коэффициентов квадратного уравнения, которое обычно записывают AX2+BX+C=0, то вполне логично присвоить им имена A, B и C; переменным, предназначенным для хранения значений корней уравнения, – имена X1 и X2.
Другой пример. Если в программе переменные, предназначенные для хранения суммы покупки и величины скидки, то этим переменным можно присвоить имена Sum и Discount.
Задание
Составьте список переменных, необходимых для вычисления объема прямоугольного параллелепипеда.
Составьте список переменных, необходимых для вычисления массы полого стержня.
Основные типы данных