Продолжение темы 1 Простые операторы языка программирования C#.

Лекции 3 СТРУКТУРА ПРОГРАММЫ, ОПЕРАТОРЫ ВВОДА-ВЫВОД ЯЗЫКА С#

3.1 Структура программы на языке C#

После определения пространства имен, необходимых для решения задачи, начинается описание класса программы.

Класс это фрагмент кода (тип), позволяющий объединять данные (поля) и функции (методы) обработки этих данных как нечто единое целое.

По определению любая программа это код, содержащий данные и методы их обработки. Поэтому коды программ решения различных задач в языке C# помещаются в классы программ. Описание класса начинается служебным словом class, за которым располагается имя класса (имя класса задается разработчиком программы или определяется по умолчанию) далее в фигурных скобках размещаются данные и методы их обработки.

Внутри описания класса программы на языке C# должен находиться метод с именем Main(). С этого метода начинается выполнение программы. Обращаю Ваше внимание на то, что в языке C# различаются строчные и прописные буквы.

Если задача простая, то все действия могут быть записаны только в методе Main(). Если задача требует декомпозиции – т. е. разбиения на отдельные фрагменты, которые реализуются другими классами или методами, то в классе программы необходимо описать эти фрагменты соответствующим образом, а в Main() указать очередность их запуска.

3.2 Пример программы

Для набора исходного кода программы необходимо на компьютере установить компилятор языка программирования на языке C#. В настоящий момент известно несколько компиляторов языка C#, например, визуальная среда программирования Visual Studio 2010, Turbo C# Explorer и др.

НЕ нашли? Не то? Что вы ищете?

Каждый компилятор имеет свои особенности, которые необходимо учитывать при наборе программы. На компьютерах нашего университета установлена визуальная среда программирования Visual Studio 2010. Поэтому содержимое лекций ориентировано на использование компилятора C# в визуальной среде программирования Visual Studio 2010.

Рассмотрим код чисто учебной программы, позволяющей во время ее работы вводить значения целых переменных a и b (в режиме диалога) и выполнять некоторые арифметические действия над ними. В программе использованы некоторые операторы, подробное описание которых будет выполнено в следующих лекциях.

using System;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

int a, b,c;

double x, y, z;

string buf;

Console. Write("Введите целое значение a ");

buf = Console. ReadLine();

a = Convert. ToInt32(buf);

Console. Write("Введите целое значение b ");

buf = Console. ReadLine();

b = Convert. ToInt32(buf);

c = a + b;

Console. WriteLine("a+b={0}", c);

c = a * b;

Console. WriteLine("a*b={0}", c);

c = a / b;

Console. WriteLine("a = {0} b = {1} a/b = {2}", a, b, c);

Console. WriteLine("Выполняем алгоритм обмена: c = a; a = b; b = c;");

c = a; a = b; b = c;

Console. WriteLine("a = {0} b = {1} c = {2}", a, b, c);

Random rnd = new Random();

Console. Write("rnd1 = new Random():");

for (int i = 1; i <= 5; i++)

{

a = rnd. Next() % 101 - 50;

Console. Write(" " + a. ToString());

}

Console. WriteLine();

Console. Write("Введите вещественное значение x ");

buf = Console. ReadLine();

x = Convert. ToDouble(buf);

y = Math. Sin(x);

z = Math. Asin(y);

Console. WriteLine("x={0} sin(x)={1:F5} Asin(sin(x))={2:F3}", x, y, z);

x = Math. PI;

y = Math. Sin(x);

z = Math. Asin(y);

Console. WriteLine("x={0} sin(x)={1:F5} Asin(sin(x))={2:F3}",x, y,z);

// Задержка рабочего экрана монитора

Console. WriteLine("Для продолжения нажмите клавишу Enter");

Console. ReadLine();

}

}

}

Работа программы:

Рисунок 3.1 – Результат работы программы «Пример 1»

В остальных примерах демонстрация работы программы будет заменяться копией рабочего окна, например:

Введите целое значение a 5

Введите целое значение b 12

a+b=17

a*b=60

a = 5 b = 12 a/b = 0

Выполняем алгоритм обмена: c = a; a = b; b = c;

a = 12 b = 5 c = 5

rnd1 = new Random(): 30 31 7 -16 29

Введите вещественное значение x 1

x=1 sin(x)=0,84147 Asin(sin(x))=1,000

x=3,14159265358979 sin(x)=0,00000 Asin(sin(x))=0,000

Для продолжения нажмите клавишу Enter

Метод Main() определен с двумя модификаторами (часто их еще называют спецификаторами доступа) public и static.

Модификатор public - открытый (публичный) указывает, что метод доступен другим методам внутри программы или извне программы.

Метод Main() находится в классе Program и обычно доступ к методам класса возможен только после создания переменной типа класс – объекта. Но если метод объявлен с модификатором static, то говорят, что к нему можно обращаться «на уровне класса», то есть, не создавая объект класса.

В круглых скобках метода Main() определены его входные параметры в виде массива строк, через которые могут передаваться указания по запуску метода из командной строки программы. В нашей программе эти параметры не используются и их можно игнорировать или вообще удалить, оставляя сокращенную форму записи метода – Main().

В программе использованы комментарии о задержке экрана монитора. Комментарии программы можно размещать как в одной строке с помощью указаний // (текст комментария), так и в нескольких строках с помощью указаний /* . . . . */.

Указание Console. ReadLine(); (в конце программы) позволяет «останавливать рабочее окно программы» для просмотра результатов ее работа, при этом указанием

Console. WriteLine("Для продолжения нажмите клавишу Enter"); выводится подсказка «Для продолжения нажмите клавишу Enter». Нажатие клавиши Enter приводит к завершению работы программы.

В нашем примере в функции Main() выполняются три основных действия:

– вывод подсказок и результатов работы программы на экран монитора;

– ввод значений переменных с клавиатуры в режиме диалога;

– вычисление некоторых арифметических выражений и присваивание результатов вычислений переменной c, x, y и z.

Рассмотрим каждое действие отдельно.

3.3 Вывод информации на экран монитора

В языке C#, при работе в консольном приложении, вывод на экран монитора осуществляется с помощью статических методов Console. WriteLine() и Console. Write() (точнее статических методов WriteLine() и Write() класса Console).

Метод Console. WriteLine() после вывода информации осуществляет перевод курсора окна в начало следующей стоки.

Метод Console. Write() после вывода информации оставляет курсор окна сразу за последним выведенным символом.

Необходимо отметить, что оба метода могут выводить информацию на экран монитора только в символьном виде, то есть значения целого или вещественного типов перед их выводом на экран монитора необходимо преобразовывать в строковый тип. Преобразования числовых значений переменных в строковые значения реализованы в каждом из этих методов, причем преобразования возможны в заданном формате.

Первый параметр методов обычно содержит текст комментариев, в который с помощью фигурных скобок включаются «заполнители». Количество «заполнителей» не ограничено и определяется только требованиями задачи. Начиная с нуля все «заполнители» нумеруются. За номером заполнителя через двоеточие может указываться спецификатор формата вывод.

После первого параметра в методах вывода через запятую указываются имена переменных, значения которых в соответствующем формате будут размещаться в текст вывода вместо «заполнителей». Естественно количество переменных и количество «заполнителей» должно совпадать. Например,

Console. WriteLine("a = {0} b = {1} a/b = {2}", a, b, c);

Console. WriteLine("x={0} sin(x)={1:F5} Asin(sin(x))={2:F3}", x, y, z);

В первом случае вместо {0}, {1} и {2} в выводимый текст будут вставляться значения переменных a, b и c без форматирования. Во втором случае вывод sin(x) и Asin(x) уточняется с помощью спецификатора форматирования числа F, и будет осуществляться с точность до 5 и 3 знаков после запятой соответственно. Некоторые спецификаторы форматирования приведены в таблице 3.1.

Таблица 3.1 Спецификаторы форматирования чисел

Спецификатор

Назначение

C или c

Используется для вывода чисел в денежном формате

D или d

Используется для вывода десятичных значений. После символа можно указывать количество выводимых символов после запятой

E или e

Используется для вывода чисел в экспоненциальной форме

F или f

Выводит вещественное число «с фиксированной точкой». После символа можно указывать количество выводимых символов после запятой

G или g

Общий (general) формат. Использует формат F или E в зависимости от размера выводимого числа

N или n

Используется для вывода чисел с разделителями тысяч. В качестве разделителя используется запятая

X или x

Выводит целое число в шестнадцатеричном формате. Если формат задан прописным символом, то все буквы шестнадцатеричного формата также будут прописными

Остальные способы вывода информации на экран монитора будут рассмотрены по мере изучения материала.

3.4 Ввода данных с клавиатуры

Для ввода данных с клавиатуры (режим диалога с программой или интерактивный режим) в языке C# используются консольные статические методы Console. ReadLine() и Console. Read(). Эти методы приостанавливают выполнение программы и ждут ввода данных с клавиатуры компьютера. Необходимо отметить, что метод Console. ReadLine() возвращает переменную типа string, а метод Console. Read() – переменную типа int. Оба метода наделены функцией эхо – повтора введенной информации на экран монитора.

Вводимая с клавиатуры информация заносится в специальную область памяти – буфер. Завершение ввода в буфер определяется нажатием клавиши Enter (коды этой клавиши также заносятся в буфер).

Результатом работы метод Console. ReadLine() является значение строковой переменной, которой соответствует данный метод (в нашем случае это переменная buf). По окончании ввода метод очищает содержимое буфера памяти консольного ввода.

Метод Console. Read() забирает из буфера памяти консольного ввода только один символ и преобразует его в целое число. По окончании ввода метод не очищает оставшееся содержимое буфера памяти консольного ввода. Например, если фрагмент первой программы

Console. Write("Введите целое значение a ");

buf = Console. ReadLine();

a = Convert. ToInt32(buf);

Console. Write("Введите целое значение b ");

buf = Console. ReadLine();

b = Convert. ToInt32(buf);

c = a + b;

Console. WriteLine("a+b={0}", c);

заменить на код:

Console. Write("Введите целое значение a ");

a = Console. Read();

Console. Write("Введите целое значение b ");

buf = Console. ReadLine();

b = Convert. ToInt32(buf);

c = a + b;

и на предложение «Введите целое значение a» ввести число 47, то переменной a будет присвоено значение 52 (код символа 4), переменной b – число 7, а результат сложения c – составит значение 59. При этом задержки экрана монитора для ввода значения переменной b не происходит – значению b присваивается оставшаяся часть буфера консольного ввода.

На этапе освоения программирования C# (до изучения строковых переменных) не рекомендуется использовать метод Console. Read().

3.5 Вопросы для проверки

3.5.1 Какая из следующих последовательностей символов организует ввод с клавиатуры в языке С#?

A)  Console. WriteLine(“Введите значение а”,a);

B)  Console. WriteLine(a);

C)  buf = Console. ReadLine(a);

D)  buf = Console. ReadLine();

E)  Console. ReadLine(a);

3.5.2 Какая из следующих последовательностей символов организует вывод значений переменных на экран монитора в языке С#?

A)  buf = Console. WriteLine(a, b,c);

B)  Console. WriteLine(a, b,c);

C)  Console. WriteLine(" {0} {1} ", a, b);

D)  Console. WriteLine(“Вывод значений ”,a, b,c);

E)  Console. ReadLine(a, b,c);

3.5.3 Для чего используется служебное слово using?

3.5.4 Как называется основной метод программы языка C#?

3.5.5 Понятие переменной?

Продолжение темы 1 Простые операторы языка программирования C#.

Лекция 4 ОПЕРАТОР ПРИСВАИВАНИЯ, МАТЕМАТИЧЕСКИЕ ФУНКЦИИ ЯЗЫКА С#

4.1 Оператор присваивания

В языке программирования C# оператор присваивания обозначается символом ‘=’. Формат записи оператора присваивания имеет следующий вид:

переменная = выражение;

Например:

c = a + b;

Слева от знака = должна находиться переменная, а справа от знака = могут находиться переменные, константы, конкретные значения или выражения. Выражения могут включать арифметические операции, различные функции и т. д. Очередность действий в выражении слева на право, но может быть изменена с помощью скобок.

В языке C# используются следующие арифметические операции:

+ – операция сложения;

- – операция вычитания;

* – операция умножения;

/ – операция деления для переменных вещественного типа;

/ – операция целочисленного деления для переменных целого типа (с отбрасыванием остатка – смотрите результат деления в нашем примере);

% – операция нахождения остатка целочисленного деления применима для переменных целого типа.

Например,

7/2=3; 7.0/2.0=3.5; 6%2=0; 7%2=1;

В языке C# любая из перечисленных операций допускает сокращенную форму записи операции присваивания:

Переменная операция = выражение;

Например, если переменная a равна 5, то запись a += 6; присвоит переменной a значение 11. Операция += прибавляет значение выражения, записанного справа от символа =, к значению переменной, записанной слева от символа +, и результат операции сложения присваивается переменной, записанной слева от знака +.

Аналогичным образом выполняется оператор присваивания для операций -, *, /, %.

Например, если переменная a равна 5, то после выполнения оператора присваивания

a %= 3;

значение переменной a будет равно 2.

При выполнении операции присваивания некоторой переменной результатов алгебраического выражения выполняется неявное или явное преобразование типов.

Если операнды алгебраического выражения имеют разные типы, то перед вычислениями автоматически выполняется преобразование типов. Преобразование осуществляется по правилам, обеспечивающим приведение более коротких типов к более длинным типам с сохранением значимости и точности, но не наоборот.

Автоматическое (неявное) преобразование возможно не всегда, а только если при этом не может случиться потеря значимости.

Арифметические операции не определены для более коротких, чем int, типов. Это означает, что если в выражении участвуют только величины типов sbyte, byte, short и ushort, перед выполнением операции они будут преобразованы в int. Таким образом, результат любой арифметической операции имеет тип не менее int.

Если неявного преобразования из одного типа в другой не существует, программист может задать явное преобразование типа с помощью операции (тип) выражение.

Например, если переменной целого типа присваивается вещественное значение, то дробная часть этого значения отбрасывается. Для задания явного преобразования типов можно использовать указания float или int. Например:

x = (float)(31*c - 16);

Console. WriteLine("x={0}", x);

//или

a = (int)(18.6/3.6 + 3.7);

Console. WriteLine("a={0}", a);

Явное преобразование типов целесообразно использовать в вычислениях, в которых используются переменные разного типа, чтобы внести ясность в программу, но необходимо помнить, что явные преобразования, как правило, связаны с потерей точности вычислений.

В языке C# для операции инкремента (увеличение переменной на единицу) и операции декремента (уменьшения переменной на единицу) применяется сокращенные записи. То есть операция присваивания

переменная = переменная + 1;

заменяется записью переменная ++; ,

а операция присваивания

переменная = переменная - 1;

заменяется записью переменная --;.

Например, если переменная a равна 5, то после выполнения оператора присваивания a++; значение переменной a будет равно 6. Если теперь выполнения оператора присваивания a--;, то значение переменной a будет опять равно 5.

В языке C# допускаются префиксные формы записи операций инкремента и декремента, например, ++a или --a, в отличии от постфиксных их форм записи рассмотренных выше.

Префиксная форма записи требует сначала выполнения операции инкремента или декремента, а затем использования переменной. Постфиксные формы записи допускают сначала использования переменной, а затем выполнение операции инкремента или декремента. Например, выражение:

a = b++; можно заменить двумя следующими операторами:

a = b; b = b + 1;,

а выражение:

a = ++b; в языке C# эквивалентно двум следующим операторам:

b = b + 1; a = b;.

Эти особенности языка C# необходимо учитывать при написании исходных кодов программ.

Перечень основных операций языка C# с учетом их приоритета приведены в рекомендуемой литературе.

В одной из строк нашей первой программы c = a; a = b; b = c; реализован очень важный алгоритм – алгоритм обмена. Этот алгоритм позволяет поменять значения переменных a и b с помощью промежуточной переменной c. Данный алгоритм очень широко используется в других более сложных алгоритмах, например, сортировки чисел или формировании некоторого списка в алфавитном порядке и т. д. и понимание этого алгоритма чрезвычайно важно.

4.2 Стандартные математические функции языка C#

Как и любой язык программирования, язык C# имеет набор стандартных математических функций (методов), которые находятся в классе Math (определенном в пространстве имен System) и могут быть использованы при написании исходного кода программы.

Все методы объявлены с модификаторами public и static, что делает эти методы доступными из любой точки программы без предварительного создания объекта класса Math. Основные методы класса Math приведены в таблице 4.1.

Таблица 4.1 Основные методы класса Math

Метод

Пояснения

double Abs(double d);

Возвращает модуль аргумента. Перегружен

double Acos(double d);

Возвращает угол в радианах по его арккосинусу

double Asin(double d);

Возвращает угол в радианах по его арксинусу

double Atan(double d);

Возвращает угол в радианах по его арктангенсу

Long BigMul(int x, int y);

Возвращает произведение двух 32-разрядных чисел

double Ceiling(double d);

Возвращает наименьшее целое число, которое больше или равно аргументу

double Cos(double d);

Возвращает косинус угла d в радианах

double Cosh(double d);

Возвращает гиперболический косинус угла d в радианах

int DivRen(int a, int b, out int R);

Возвращает результат деления двух целых чисел и остаток R как выходной параметр

E

2,71828182845905

double Exp(double d);

Возвращает E в степени d

double Floor(double d);

Возвращает наибольшее целое, которое меньше или равно заданному числу

double IEEERemainder( double a, double b);

Возвращает остаток от деления a на b

double Log(double d);

Возвращает натуральный логарифм числа d. В перегруженном методе вторым параметром передается основание логарифма

double Log10(double d);

Возвращает десятичный логарифм числа d

double Max(double a, double b));

Возвращает максимальное из двух чисел. Перегружен

double Min(double a, double b);

Возвращает минимальное из двух чисел. Перегружен

PI

3,14159265358979

double Pow(double a, double b);

Возвращает результат возведения числа a в степень b

double Round(double a);

Округляет число a до ближайшего целого. Перегружен

int Sign(double a);

Возвращает -1, 0 или +1 в зависимости от того, что число a меньше нуля, равно ему или больше нуля. Перегружен

double Sin(double a);

Возвращает синус угла а в радианах

double Sinh(double a);

Возвращает гиперболический синус угла a в радианах

double Sqrt(double a);

Возвращает корень квадратный из a

double Tan(double a);

Возвращает тангенс угла a в радианах

double Tanh(double a);

Возвращает гиперболический тангенс угла a в радианах

Перегружен означает, что существует несколько одинаковых по имени методов для различных типов данных. Например, метод Max() может работать как с вещественными, так и целыми типами данных.

В процессе отладки программы, для упрощения процесса ввода данных или моделирования некоторых процессов, многие программисты используют генератор последовательности псевдослучайных целых или вещественных чисел, равномерно распределенных в некотором диапазоне. Методы, создающие эти последовательности находятся в классе Random.

Класс использует некоторое начальное число в качестве базового значения, применяет к нему алгоритм перемешивания разрядов и полученное таким образом число возвращает как очередное случайное число, при этом оно одновременно становится базовым для выработки следующего случайного числа. Таким образом, вырабатывается последовательность псевдослучайных чисел, так как каждое очередное число полностью определяется начальным значением и алгоритмом перемешивания.

Таблица 4.2. Некоторые методы класса Random

Метод

Описание

Public virtual int Next();

Возвращает очередное псевдослучайное число. В перегруженных вариантах метода можно указывать максимальное значение генерируемых чисел или диапазон их значений

Public virtual void NextBytes (byte[] buffer);

Заполняет переменную buffer байтами с псевдослучайными значениям

Public virtual double NextDouble();

Возвращает вещественное псевдослучайное число в диапазоне от 0.0 до 1.0

Класс имеет два конструктора: умалчиваемый без параметров и перегруженный с параметром int. Первый в качестве начального значения принимает текущую дату и время, второй — параметр начального базового значения. Таким образом, первый конструктор создает неповторяющиеся серии чисел, а второй может создавать одинаковые серии.

Необходимо отметить, что методы класса не являются статическими, поэтому для их использования обязательно создается объект класса – rnd. Например,

Random rnd = new Random();

Console. Write(" " + (rnd. Next()%101).ToString());

Console. WriteLine();

Данный фрагмент позволяет сформировать псевдослучайное целое число в диапазоне от 0 до 100. Это возможно, так как метод rnd. Next() формирует случайное целое число в диапазоне от 0 до максимального целого, но остаток от деления на 101 всегда будет находиться в диапазоне от 0 до 100. Запись

a = rnd. Next() % 101 - 50;

позволяет формировать псевдослучайное целое число в диапазоне от -50 до 50.

Для анализа рассматриваем возможные крайние случаи формирования псевдослучайных целых чисел 0 – в этом случае переменная a равно минус 50, и 100 – в этом случае переменная a равна 50.

Все остальные значения переменной a находятся между этими крайними значениями диапазона.

Использование стандартных математических функций позволяет программировать любые сложные алгебраические выражения.

4.3 Работа с текстовыми файлами

На этапе тестирования программы приходится проверять работу программы при различных (самых невероятных) входных значениях данных. Эти «тестовые» значения обычно записываются в специальные текстовые файлы «входных» данных и поочередно предлагаются программе для выполнения. Результат работы программы часто сохраняются в «выходных» файлах – для дальнейшего анализа и проверки. Для этих целей в языке C# предусмотрена работа с текстовыми файлами – входной файл с именем input. txt и выходной файл с именем output. txt. Файлы должны создаваться в том же каталоге, что и исполняемый файл программы, по умолчанию — ...\ConsoleApplication1\bin\Debug.

В качестве примера рассмотрим процесс тестирования программы, в которой рассматриваются результаты деления двух вещественных чисел.

Код учебной программы:

using System;

using System. IO;

using System. Text;

namespace ConsoleApplication1

{

class Program

{

static void Main()

{

double z, y,x;

StreamReader f1 = new StreamReader("input. txt");

StreamWriter f = new StreamWriter("output. txt");

string buf = f1.ReadLine();

z = Convert. ToDouble(buf);

buf = f1.ReadLine();

x = Convert. ToDouble(buf);

f. WriteLine("z = {0} x = {1} ", z, x);

y = z / x;

f. WriteLine(" z / x = {0} ", y);

y = x / z;

f. WriteLine(" x / z = {0} ", y);

y = - z / 0;

f. WriteLine(" - z / 0 = {0} ", y);

y = -0.0 / 0.0;

f. WriteLine("-0.0 / 0.0 = {0} ", y);

y = 0.0 / 0.0;

f. WriteLine(" 0.0 / 0.0 = {0} ", y);

f1.Close();

f. Close();

}

}

}

Входной файл input. txt содержит одно число 123, которое будет присвоено переменной z. Так как второе число не задано, то переменной x будет присвоен ноль.

Результат работы программы находится в выходном текстовом файле output. txt, который можно просмотреть с помощью «блокнота».

z = 123 x = 0

z / x = бесконечность

x / z = 0

- z / 0 = - бесконечность

-0.0 / 0.0 = NaN

0.0 / 0.0 = NaN

Рассмотрим подробнее результаты работы программы. Мы искусственно создали ситуацию – деление на ноль, которая во многих языках программирования вызывает прерывание программы.

В языке C# для вещественных значений предусмотрены три варианта критических для программы результатов вычислений – Infinity, NegativeInfinity и NaN. Первые два хорошо известны из математики – это бесконечность и отрицательная бесконечность. Третье значение NaN (Not a Number) появляется тогда, когда результат не является вещественным числом или когда программа не может его определить.

Рассмотрим ситуации появления этих значений. Если при выполнении операций умножения или деления результат по модулю превосходит максимально допустимое число, то значением является бесконечность или отрицательная бесконечность в зависимости от знака результата. У типов double и float есть константы, задающие эти значения. При выполнении операций сложения, вычитания и умножения бесконечности с обычными вещественными числами результат имеет значение бесконечность, возможно, с противоположным знаком. При делении вещественного числа на бесконечность результат равен нулю.

Если бесконечность делится на бесконечность или ноль умножается на бесконечность, то результат будет NaN. Этот же значение будет появляться, когда результат выполнения некоторой операции не будет вещественным числом, например, при извлечении квадратного корня из отрицательного числа. Если NaN участвует в операциях, то результатом будет NaN.

Второй задачей этого учебного примера была работа с текстовыми файлами. Рассмотрим основные этапы этой работы.

Во-первых, необходимо подключения специального пространства имен – using System. IO; отвечающего за файловый ввод – вывод.

Во-вторых, необходимо объявлять файловые переменные – создавать объекты для работы с файлами

(StreamReader f1 = new StreamReader("input. txt"); и

StreamWriter f = new StreamWriter("output. txt");), которым ставятся в соответствие имена файлов на магнитных дисках.

В-третьих, выполнять операции чтения и записи (ввода и вывода) текстовой (строковой) информации с магнитного диска.

В-четвертых, выполнять операции преобразования считанной строковой информации в значения соответствующих типов.

В-пятых, по окончании работы с текстовыми файлами их необходимо закрывать – f1.Close(); f. Close();

4.4 Вопросы для проверки

4.4.1 Какие из следующих последовательностей символов являются операторами присваивания?

A)  a*c = b;

B)  a = c + 1;

C)  a*x + b := 0;

D)  –y = y;

E)  a := b;.

4.4.2 Какие числа будут выведены в результате выполнения следующей последовательности?

double x;

Console. Write("Введите значение x ");

buf = Console. ReadLine();

x = Convert. ToDouble(buf);

x = x - 1.2;

x = Math. Sqrt(x + 4) * x + 1;

Console. WriteLine("x= {0} ", x);

если было введено число x = 1,2 Варианты ответов:

A)  0;

B)  1.2;

C)  -1;

D)  2;

E)  1;

4.4.3 Как определяется формат вывода чисел?

4.4.4 Чему равно выражение 10 % 3 ?

4.4.5 Чему равно выражение 10 / 3 ?