🗊Презентация Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных

Нажмите для полного просмотра!
Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №1Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №2Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №3Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №4Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №5Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №6Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №7Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №8Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №9Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №10Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №11Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №12Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №13Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №14Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №15Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №16Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №17Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №18Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №19Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №20Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №21Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №22Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №23Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №24Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №25Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №26Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №27Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №28Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №29Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №30Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №31Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №32Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №33Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №34Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №35Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №36Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №37Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №38Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №39Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №40Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №41Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №42Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №43Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №44Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №45Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №46Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №47Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №48Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №49Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №50Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №51Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №52Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №53Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №54Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №55Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №56Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №57Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №58Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №59Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №60Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №61Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №62Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №63Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №64Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №65Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №66Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №67Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №68Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №69Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №70Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №71Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №72Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №73Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №74Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №75Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №76Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №77Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №78Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №79Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №80Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №81Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №82Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №83Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №84Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №85Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №86Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №87Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №88Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №89Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №90Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №91Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №92Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №93Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №94Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №95Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №96Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №97Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №98Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №99Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №100Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №101Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №102Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №103Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №104Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №105Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №106Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №107Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №108Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №109Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №110Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №111Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №112Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №113Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №114Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №115Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №116Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №117Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №118Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №119Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №120Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №121

Содержание

Вы можете ознакомиться и скачать презентацию на тему Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных. Доклад-сообщение содержит 121 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Повторение материала I семестра
 Основы языка С#
 Основы ООП
 Типы и структуры данных
Описание слайда:
Повторение материала I семестра Основы языка С# Основы ООП Типы и структуры данных

Слайд 2





Основы языка С#
Описание слайда:
Основы языка С#

Слайд 3





Состав языка
Символы:
буквы: 		  A-Z, a-z, _, буквы нац. алфавитов
цифры: 	  0-9, A-F
спец. символы: +, *, {, …
пробельные символы
Описание слайда:
Состав языка Символы: буквы: A-Z, a-z, _, буквы нац. алфавитов цифры: 0-9, A-F спец. символы: +, *, {, … пробельные символы

Слайд 4





Константы (литералы) C#
Описание слайда:
Константы (литералы) C#

Слайд 5





Концепция типа данных
внутреннее представление данных   =>  множество их возможных значений
допустимые действия над данными => операции и функции
Описание слайда:
Концепция типа данных внутреннее представление данных => множество их возможных значений допустимые действия над данными => операции и функции

Слайд 6


Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №6
Описание слайда:

Слайд 7





Хранение в памяти величин значимого и ссылочного типа
Описание слайда:
Хранение в памяти величин значимого и ссылочного типа

Слайд 8





Логический (булевский) и целые
Описание слайда:
Логический (булевский) и целые

Слайд 9





Остальные
Описание слайда:
Остальные

Слайд 10





Структура простейшей программы на С#
using System;
namespace A
{
       class Class1
       {
	   	  static void Main()
            {
                   // описания и операторы, например:
                   Console.Write("Превед медвед");
            }
		  // описания
       }
}
Описание слайда:
Структура простейшей программы на С# using System; namespace A { class Class1 { static void Main() { // описания и операторы, например: Console.Write("Превед медвед"); } // описания } }

Слайд 11





Переменные 
 Переменная — это величина, которая во время работы программы может изменять свое значение. 
 Все переменные, используемые в программе, должны быть описаны.
 Для каждой переменной задается ее имя и тип:
int	  number; 
float  x, y; 
char	  option;

Тип переменной выбирается исходя из диапазона и требуемой точности представления данных.
Описание слайда:
Переменные Переменная — это величина, которая во время работы программы может изменять свое значение. Все переменные, используемые в программе, должны быть описаны. Для каждой переменной задается ее имя и тип: int number; float x, y; char option; Тип переменной выбирается исходя из диапазона и требуемой точности представления данных.

Слайд 12





Общая структура программы на С#
Описание слайда:
Общая структура программы на С#

Слайд 13





Область действия и время жизни переменных
Переменные описываются внутри какого-л. блока: 
	    1) класса 
	    2) метода или блока внутри метода
Переменные, описанные непосредственно внутри класса, называются полями класса. 
Переменные, описанные внутри метода класса, называются локальными переменными.
Область действия переменной - область программы, где можно использовать переменную.
Область действия переменной начинается в точке ее описания и длится до конца блока, внутри которого она описана. 
Время жизни: переменные создаются при входе в их область действия (блок) и уничтожаются при выходе.
Описание слайда:
Область действия и время жизни переменных Переменные описываются внутри какого-л. блока: 1) класса 2) метода или блока внутри метода Переменные, описанные непосредственно внутри класса, называются полями класса. Переменные, описанные внутри метода класса, называются локальными переменными. Область действия переменной - область программы, где можно использовать переменную. Область действия переменной начинается в точке ее описания и длится до конца блока, внутри которого она описана. Время жизни: переменные создаются при входе в их область действия (блок) и уничтожаются при выходе.

Слайд 14





Инициализация переменных
 При объявлении можно присвоить переменной начальное значение (инициализировать). 
int	number = 100; 
float	x 	= 0.02; 
char	option = ’ю’;
 При инициализации можно использовать не только константы, но и выражения — главное, чтобы на момент описания они были вычислимыми, например:
int b = 1, a = 100; 
int x = b * a + 25;
 Поля класса инициализируются «значением по умолчанию» (0 соответствующего типа). 
 Локальные  переменные автоматически НЕ инициализируются. Рекомендуется всегда явным образом инициализировать переменные при описании.
Описание слайда:
Инициализация переменных При объявлении можно присвоить переменной начальное значение (инициализировать). int number = 100; float x = 0.02; char option = ’ю’; При инициализации можно использовать не только константы, но и выражения — главное, чтобы на момент описания они были вычислимыми, например: int b = 1, a = 100; int x = b * a + 25; Поля класса инициализируются «значением по умолчанию» (0 соответствующего типа). Локальные переменные автоматически НЕ инициализируются. Рекомендуется всегда явным образом инициализировать переменные при описании.

Слайд 15





Тип результата выражения
Если входящие в выражение операнды одного типа и операция для этого типа определена, то результат выражения будет иметь тот же тип.
Если операнды разного типа и (или) операция для этого типа не определена, перед вычислениями автоматически выполняется преобразование типа по правилам, обеспечивающим приведение более коротких типов к более длинным для сохранения значимости и точности. 
		char    c = 'A';
		int       i = 100;
		double d = 1;
		double summa = c + i + d;    // 166
Описание слайда:
Тип результата выражения Если входящие в выражение операнды одного типа и операция для этого типа определена, то результат выражения будет иметь тот же тип. Если операнды разного типа и (или) операция для этого типа не определена, перед вычислениями автоматически выполняется преобразование типа по правилам, обеспечивающим приведение более коротких типов к более длинным для сохранения значимости и точности. char c = 'A'; int i = 100; double d = 1; double summa = c + i + d; // 166

Слайд 16





Явное преобразование типа
Автоматическое (неявное) преобразование возможно не всегда, а только если при этом не может случиться потеря значимости.
Если неявного преобразования из одного типа в другой не существует, программист может задать явное преобразование типа с помощью операции (тип) x. 
		char    c = 'A';
		int       i = 100;
		double d = 1;
		с = (char) i;                   // 'd'
		c = (char) d;
		i = (int) d;
Описание слайда:
Явное преобразование типа Автоматическое (неявное) преобразование возможно не всегда, а только если при этом не может случиться потеря значимости. Если неявного преобразования из одного типа в другой не существует, программист может задать явное преобразование типа с помощью операции (тип) x. char c = 'A'; int i = 100; double d = 1; с = (char) i; // 'd' c = (char) d; i = (int) d;

Слайд 17





Неявные арифметические преобразования типов в C#
Описание слайда:
Неявные арифметические преобразования типов в C#

Слайд 18





Вывод на консоль – 1/4
using System;
namespace A
{    class Class1
    {    static void Main()
        {
            int        i = 3;
            double  y = 4.12;
            decimal d = 600m;
		 string    s = "Вася";
	
        }
    }
}
Описание слайда:
Вывод на консоль – 1/4 using System; namespace A { class Class1 { static void Main() { int i = 3; double y = 4.12; decimal d = 600m; string s = "Вася"; } } }

Слайд 19





Вывод на консоль – 2/4
using System;
namespace A
{    class Class1
    {    static void Main()
        {
            int        i = 3;
            double  y = 4.12;
            decimal d = 600m;
		 string    s = "Вася";
	
        }
    }
}
Описание слайда:
Вывод на консоль – 2/4 using System; namespace A { class Class1 { static void Main() { int i = 3; double y = 4.12; decimal d = 600m; string s = "Вася"; } } }

Слайд 20





Вывод на консоль – 3/4
using System;
namespace A
{    class Class1
    {    static void Main()
        {
            int        i = 3;
            double  y = 4.12;
            decimal d = 600m;
		 string    s = "Вася";
	
        }
    }
}
Описание слайда:
Вывод на консоль – 3/4 using System; namespace A { class Class1 { static void Main() { int i = 3; double y = 4.12; decimal d = 600m; string s = "Вася"; } } }

Слайд 21





Ввод с консоли – 2/2
using System;
namespace A
{    class Class1
    {    static void Main()
        {
            string s = Console.ReadLine();           // ввод строки
            
            char c = (char)Console.Read();          // ввод символа
            Console.ReadLine();                             
        
            int i = Convert.ToInt32( Console.ReadLine() );           
            double x = Convert.ToDouble( Console.ReadLine() ); 
            double y = double.Parse( Console.ReadLine() );         
  	   }
    }
}
Описание слайда:
Ввод с консоли – 2/2 using System; namespace A { class Class1 { static void Main() { string s = Console.ReadLine(); // ввод строки char c = (char)Console.Read(); // ввод символа Console.ReadLine(); int i = Convert.ToInt32( Console.ReadLine() ); double x = Convert.ToDouble( Console.ReadLine() ); double y = double.Parse( Console.ReadLine() ); } } }

Слайд 22





Пример: перевод температуры из F в С
using System;
namespace CA1
{    class Class1
   {    static void Main()
     {
	    Console.WriteLine( "Введите температуру по Фаренгейту" );
        double fahr = Convert.ToDouble( Console.ReadLine() );
        double cels =5.0 / 9 * (fahr - 32);
        Console.WriteLine( "По Фаренгейту: {0} в градусах Цельсия: {1}", 
				  fahr, cels );
      }
   }
}
Описание слайда:
Пример: перевод температуры из F в С using System; namespace CA1 { class Class1 { static void Main() { Console.WriteLine( "Введите температуру по Фаренгейту" ); double fahr = Convert.ToDouble( Console.ReadLine() ); double cels =5.0 / 9 * (fahr - 32); Console.WriteLine( "По Фаренгейту: {0} в градусах Цельсия: {1}", fahr, cels ); } } }

Слайд 23


Поворение материала 1 семестра. Основы языка С#. Основы ООП. Типы и структуры данных, слайд №23
Описание слайда:

Слайд 24





Блок (составной оператор)
Блок — последовательность операторов, заключенная в операторные скобки:
begin   end          – в Паскале
{          }             - в С-подобных языках
Блок воспринимается компилятором как один оператор и может использоваться всюду, где синтаксис требует одного оператора, а алгоритм — нескольких. 
Блок может содержать один оператор или быть пустым.
Описание слайда:
Блок (составной оператор) Блок — последовательность операторов, заключенная в операторные скобки: begin end – в Паскале { } - в С-подобных языках Блок воспринимается компилятором как один оператор и может использоваться всюду, где синтаксис требует одного оператора, а алгоритм — нескольких. Блок может содержать один оператор или быть пустым.

Слайд 25





Условный оператор if
if ( a < 0 ) b = 1;
if ( a < b && (a > d || a == 0) )   ++b; 
else {	b *= a; a = 0; }
if ( a < b ) if ( a < c ) m = a;
	      else          m = c;
else	      if ( b < c ) m = b; 
	      else          m = c;
Описание слайда:
Условный оператор if if ( a < 0 ) b = 1; if ( a < b && (a > d || a == 0) ) ++b; else { b *= a; a = 0; } if ( a < b ) if ( a < c ) m = a; else m = c; else if ( b < c ) m = b; else m = c;

Слайд 26





Оператор выбора switch
switch ( выражение ){
	case константное_выражение_1: [ список_операторов_1 ]
	case константное_выражение_2: [ список_операторов_2 ]
	
	case константное_выражение_n: [ список_операторов_n ]
	[ default: операторы ]
}
Описание слайда:
Оператор выбора switch switch ( выражение ){ case константное_выражение_1: [ список_операторов_1 ] case константное_выражение_2: [ список_операторов_2 ] case константное_выражение_n: [ список_операторов_n ] [ default: операторы ] }

Слайд 27





Пример: Калькулятор на четыре действия 
using System; namespace ConsoleApplication1
{   class Class1    {   static void Main()        {
         Console.WriteLine( "Введите 1й операнд:" ); 
	    double a = double.Parse(Console.ReadLine());
	    Console.WriteLine( "Введите знак" );
	    char op = (char)Console.Read(); Console.ReadLine();
	    Console.WriteLine( "Введите 2й операнд:" ); 
	    double b = double.Parse(Console.ReadLine());
         double res = 0;
         bool ok = true;
            switch (op)
            {  case '+' : res = a + b; break;
                case '-'  : res = a - b;  break;
                case '*' : res = a * b; break;
                case '/' : res = a / b; break;
                default  : ok = false; break;
            }
         if (ok) Console.WriteLine( "Результат: " + res );
        else    Console.WriteLine( "Недопустимая операция" );
}}}
Описание слайда:
Пример: Калькулятор на четыре действия using System; namespace ConsoleApplication1 { class Class1 { static void Main() { Console.WriteLine( "Введите 1й операнд:" ); double a = double.Parse(Console.ReadLine()); Console.WriteLine( "Введите знак" ); char op = (char)Console.Read(); Console.ReadLine(); Console.WriteLine( "Введите 2й операнд:" ); double b = double.Parse(Console.ReadLine()); double res = 0; bool ok = true; switch (op) { case '+' : res = a + b; break; case '-' : res = a - b; break; case '*' : res = a * b; break; case '/' : res = a / b; break; default : ok = false; break; } if (ok) Console.WriteLine( "Результат: " + res ); else Console.WriteLine( "Недопустимая операция" ); }}}

Слайд 28







Операторы цикла:
 с предусловием - while 
 с постусловием - do
 с параметром - for
 перебора - foreach
Описание слайда:
Операторы цикла: с предусловием - while с постусловием - do с параметром - for перебора - foreach

Слайд 29





Цикл с предусловием 
while ( выражение ) оператор
Описание слайда:
Цикл с предусловием while ( выражение ) оператор

Слайд 30





Цикл с постусловием 
do 
    оператор
while  выражение;
Описание слайда:
Цикл с постусловием do оператор while выражение;

Слайд 31





Пример цикла с параметром
using System;
namespace ConsoleApplication1
{   class Class1
    {   static void Main()
        {
            double Xn = -2, Xk = 12, dX = 2, t = 2, y;
            Console.WriteLine( "|     x     |     y     |";
            for ( double x = Xn; x <= Xk; x += dX )
            {
                y = t * x;
                Console.WriteLine( "| {0,9} | {1,9} |", x, y );  
            }
        }
    }
}
Описание слайда:
Пример цикла с параметром using System; namespace ConsoleApplication1 { class Class1 { static void Main() { double Xn = -2, Xk = 12, dX = 2, t = 2, y; Console.WriteLine( "| x | y |"; for ( double x = Xn; x <= Xk; x += dX ) { y = t * x; Console.WriteLine( "| {0,9} | {1,9} |", x, y ); } } } }

Слайд 32





Передача управления
оператор break — завершает выполнение цикла, внутри которого записан
оператор continue — выполняет переход к следующей итерации цикла
оператор return — выполняет выход из функции, внутри которой он записан
оператор goto — выполняет безусловную передачу управления
оператор throw — генерирует исключительную ситуацию.
Описание слайда:
Передача управления оператор break — завершает выполнение цикла, внутри которого записан оператор continue — выполняет переход к следующей итерации цикла оператор return — выполняет выход из функции, внутри которой он записан оператор goto — выполняет безусловную передачу управления оператор throw — генерирует исключительную ситуацию.

Слайд 33





Пример: вычисление суммы ряда
using System;
namespace ConsoleApplication1
{   class Class1
    {   static void Main()
        {  double e = 1e-6;	            const int iterLimit = 500;     
            Console.WriteLine( "Введите аргумент:" );
            double x = Convert.ToDouble(Console.ReadLine());
Описание слайда:
Пример: вычисление суммы ряда using System; namespace ConsoleApplication1 { class Class1 { static void Main() { double e = 1e-6; const int iterLimit = 500; Console.WriteLine( "Введите аргумент:" ); double x = Convert.ToDouble(Console.ReadLine());

Слайд 34





Простая проверка ввода
Описание слайда:
Простая проверка ввода

Слайд 35





Проверка ввода с помощью цикла do-while
using System;
namespace ConsoleApplication1
{   class Program
    {   static void Main()  {
            const int max_attempts = 3;
            int i = 0;
            do
            {
                Console.WriteLine( "Введите  значение > 0:" );
                double a = double.Parse(Console.ReadLine());
                ++i; if ( i >= max_attempts ) { … return; }
            } while ( a <= 0 );
        }
    }            // ограничивать кол-во попыток обязательно!
}
Описание слайда:
Проверка ввода с помощью цикла do-while using System; namespace ConsoleApplication1 { class Program { static void Main() { const int max_attempts = 3; int i = 0; do { Console.WriteLine( "Введите значение > 0:" ); double a = double.Parse(Console.ReadLine()); ++i; if ( i >= max_attempts ) { … return; } } while ( a <= 0 ); } } // ограничивать кол-во попыток обязательно! }

Слайд 36





Рекомендуемая структура обработки ошибок исходных данных
Описание слайда:
Рекомендуемая структура обработки ошибок исходных данных

Слайд 37





Понятие «исключительная ситуация» 
При вычислении выражений могут возникнуть ошибки (переполнение, деление на ноль). 
В C# есть механизм обработки исключительных ситуаций (исключений), который позволяет избегать аварийного завершения программы. 
Если в процессе вычислений возникла ошибка, система сигнализирует об этом с помощью выбрасывания (генерирования)  исключения. 
Каждому типу ошибки соответствует свое исключение. Исключения являются классами, которые имеют общего предка — класс Exception, определенный в пространстве имен System.
Например, при делении на ноль будет выброшено исключение DivideByZeroException, при переполнении — исключение OverflowException.
В программе необходимо предусмотреть обработку исключений.
Описание слайда:
Понятие «исключительная ситуация» При вычислении выражений могут возникнуть ошибки (переполнение, деление на ноль). В C# есть механизм обработки исключительных ситуаций (исключений), который позволяет избегать аварийного завершения программы. Если в процессе вычислений возникла ошибка, система сигнализирует об этом с помощью выбрасывания (генерирования) исключения. Каждому типу ошибки соответствует свое исключение. Исключения являются классами, которые имеют общего предка — класс Exception, определенный в пространстве имен System. Например, при делении на ноль будет выброшено исключение DivideByZeroException, при переполнении — исключение OverflowException. В программе необходимо предусмотреть обработку исключений.

Слайд 38





Механизм обработки исключений
Функция или операция, в которой возникла ошибка, генерируют исключение;
Выполнение текущего блока прекращается, отыскивается соответствующий обработчик исключения, ему передается управление.
В любом случае (была ошибка или нет) выполняется блок finally, если он присутствует. 
Если обработчик не найден, вызывается стандартный обработчик исключения.
Описание слайда:
Механизм обработки исключений Функция или операция, в которой возникла ошибка, генерируют исключение; Выполнение текущего блока прекращается, отыскивается соответствующий обработчик исключения, ему передается управление. В любом случае (была ошибка или нет) выполняется блок finally, если он присутствует. Если обработчик не найден, вызывается стандартный обработчик исключения.

Слайд 39





Пример 1: 
try {
		// Контролируемый блок 
}
catch ( OverflowException e ) { 
				// Обработка переполнения
}
catch ( DivideByZeroException ) { 
				// Обработка деления на 0
}
catch { 
		// Обработка всех остальных исключений 
}
Описание слайда:
Пример 1: try { // Контролируемый блок } catch ( OverflowException e ) { // Обработка переполнения } catch ( DivideByZeroException ) { // Обработка деления на 0 } catch { // Обработка всех остальных исключений }

Слайд 40





Пример 2: проверка ввода 
static void Main() {
            try
            {
                Console.WriteLine( "Введите напряжение:" );
                double u = double.Parse( Console.ReadLine() );
                Console.WriteLine( "Введите сопротивление:" );
                double r = double.Parse(Console.ReadLine() );
                double i = u / r;
                Console.WriteLine( "Сила тока - " + i );
            }
            catch ( FormatException )
            {
                Console.WriteLine( "Неверный формат ввода!" );
            }
            catch                                            // общий случай
            {
                Console.WriteLine( "Неопознанное исключение" );
            }
        }
Описание слайда:
Пример 2: проверка ввода static void Main() { try { Console.WriteLine( "Введите напряжение:" ); double u = double.Parse( Console.ReadLine() ); Console.WriteLine( "Введите сопротивление:" ); double r = double.Parse(Console.ReadLine() ); double i = u / r; Console.WriteLine( "Сила тока - " + i ); } catch ( FormatException ) { Console.WriteLine( "Неверный формат ввода!" ); } catch // общий случай { Console.WriteLine( "Неопознанное исключение" ); } }

Слайд 41





Рекомендации по программированию – 1/2 
Главная цель, к которой нужно стремиться, — получить легко читаемую программу возможно более простой структуры. 
Создание программы начинают с определения ее исходных данных и результатов (тип, диапазон). 
Затем записывают на естественном языке (возможно, с применением обобщенных блок-схем), что именно и как должна делать программа. 
При кодировании необходимо помнить о принципах структурного программирования: программа должна состоять из четкой последовательности блоков — базовых конструкций. 
Имена переменных должны отражать их смысл. Переменные желательно инициализировать при их объявлении. 
Следует избегать использования в программе чисел в явном виде (кроме 0 и 1). 
Программа должна быть «прозрачна». Для записи каждого фрагмента алгоритма используются наиболее подходящие средства языка.
Описание слайда:
Рекомендации по программированию – 1/2 Главная цель, к которой нужно стремиться, — получить легко читаемую программу возможно более простой структуры. Создание программы начинают с определения ее исходных данных и результатов (тип, диапазон). Затем записывают на естественном языке (возможно, с применением обобщенных блок-схем), что именно и как должна делать программа. При кодировании необходимо помнить о принципах структурного программирования: программа должна состоять из четкой последовательности блоков — базовых конструкций. Имена переменных должны отражать их смысл. Переменные желательно инициализировать при их объявлении. Следует избегать использования в программе чисел в явном виде (кроме 0 и 1). Программа должна быть «прозрачна». Для записи каждого фрагмента алгоритма используются наиболее подходящие средства языка.

Слайд 42





Рекомендации по программированию – 2/2 
В программе необходимо предусматривать реакцию на неверные входные данные. 
Необходимо предусматривать печать сообщений или выбрасывание исключения в тех точках программы, куда управление при нормальной работе программы передаваться не должно.
Сообщение об ошибке должно быть информативным и подсказывать пользователю, как ее исправить.  
После написания программу следует тщательно отредактировать.
Комментарии должны представлять собой правильные предложения без сокращений и со знаками препинания.
Описание слайда:
Рекомендации по программированию – 2/2 В программе необходимо предусматривать реакцию на неверные входные данные. Необходимо предусматривать печать сообщений или выбрасывание исключения в тех точках программы, куда управление при нормальной работе программы передаваться не должно. Сообщение об ошибке должно быть информативным и подсказывать пользователю, как ее исправить. После написания программу следует тщательно отредактировать. Комментарии должны представлять собой правильные предложения без сокращений и со знаками препинания.

Слайд 43





Основы ООП
Описание слайда:
Основы ООП

Слайд 44





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

Слайд 45





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

Слайд 46





Абстрагирование и инкапсуляция
При представлении реального объекта с помощью программного необходимо выделить в первом его существенные особенности и игнорировать несущественные. Это называется абстрагированием. 
Таким образом, программный объект — это абстракция.
Детали реализации объекта скрыты, он используется через его интерфейс — совокупность правил доступа. 
Скрытие деталей реализации называется инкапсуляцией. Это позволяет представить программу в укрупненном виде — на уровне объектов и их взаимосвязей, а следовательно, управлять большим объемом информации.
Итак, объект — это инкапсулированная абстракция с четко определенным интерфейсом.
Описание слайда:
Абстрагирование и инкапсуляция При представлении реального объекта с помощью программного необходимо выделить в первом его существенные особенности и игнорировать несущественные. Это называется абстрагированием. Таким образом, программный объект — это абстракция. Детали реализации объекта скрыты, он используется через его интерфейс — совокупность правил доступа. Скрытие деталей реализации называется инкапсуляцией. Это позволяет представить программу в укрупненном виде — на уровне объектов и их взаимосвязей, а следовательно, управлять большим объемом информации. Итак, объект — это инкапсулированная абстракция с четко определенным интерфейсом.

Слайд 47





Наследование
Наследование (inheritance) - это процесс, посредством которого один объект может приобретать свойства другого. 
Важное значение имеет возможность многократного использования кода. Для объекта можно определить наследников, корректирующих или дополняющих его поведение. 
Наследование применяется для:
исключения из программы повторяющихся фрагментов кода;
упрощения модификации программы;
упрощения создания новых программ на основе существующих.
Благодаря наследованию появляется возможность использовать объекты, исходный код которых недоступен, но в которые требуется внести изменения.
Наследование позволяет создавать иерархии объектов. Иерархия представляется в виде дерева, в котором более общие объекты располагаются ближе к корню, а более специализированные — на ветвях и листьях.
Описание слайда:
Наследование Наследование (inheritance) - это процесс, посредством которого один объект может приобретать свойства другого. Важное значение имеет возможность многократного использования кода. Для объекта можно определить наследников, корректирующих или дополняющих его поведение. Наследование применяется для: исключения из программы повторяющихся фрагментов кода; упрощения модификации программы; упрощения создания новых программ на основе существующих. Благодаря наследованию появляется возможность использовать объекты, исходный код которых недоступен, но в которые требуется внести изменения. Наследование позволяет создавать иерархии объектов. Иерархия представляется в виде дерева, в котором более общие объекты располагаются ближе к корню, а более специализированные — на ветвях и листьях.

Слайд 48





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

Слайд 49





Понятие класса
Класс является типом данных, определяемым пользователем. Он должен представлять собой одну логическую сущность, например, являться моделью реального объекта или процесса. Элементами класса являются данные и функции, предназначенные для их обработки (методы).
Все классы .NET имеют общего предка — класс object, и организованы в единую иерархическую структуру. 
Классы логически сгруппированы в пространства имен, которые служат для упорядочивания имен классов и предотвращения конфликтов имен: в разных пространствах имена могут совпадать. Пространства имен могут быть вложенными.
Любая программа использует пространство имен System.
Описание слайда:
Понятие класса Класс является типом данных, определяемым пользователем. Он должен представлять собой одну логическую сущность, например, являться моделью реального объекта или процесса. Элементами класса являются данные и функции, предназначенные для их обработки (методы). Все классы .NET имеют общего предка — класс object, и организованы в единую иерархическую структуру. Классы логически сгруппированы в пространства имен, которые служат для упорядочивания имен классов и предотвращения конфликтов имен: в разных пространствах имена могут совпадать. Пространства имен могут быть вложенными. Любая программа использует пространство имен System.

Слайд 50





Описание класса 
[ атрибуты ] [ спецификаторы ] class имя_класса [ : предки ]   тело_класса
Имя класса задается по общим правилам. 
Тело класса — список описаний его элементов, заключенный в фигурные скобки.
Атрибуты задают дополнительную информацию о классе. 
Спецификаторы определяют свойства класса, а также доступность класса для других элементов программы. 
Простейшие примеры описания класса: 
class Demo {}                               // пустой класс
public class Двигатель                   // класс с одним методом
{    public void Запуск() 
     {     Console.WriteLine( " пыщь пыщь " ); }
}
Описание слайда:
Описание класса [ атрибуты ] [ спецификаторы ] class имя_класса [ : предки ] тело_класса Имя класса задается по общим правилам. Тело класса — список описаний его элементов, заключенный в фигурные скобки. Атрибуты задают дополнительную информацию о классе. Спецификаторы определяют свойства класса, а также доступность класса для других элементов программы. Простейшие примеры описания класса: class Demo {} // пустой класс public class Двигатель // класс с одним методом { public void Запуск() { Console.WriteLine( " пыщь пыщь " ); } }

Слайд 51





Элементы класса
Описание слайда:
Элементы класса

Слайд 52





Описание объекта (экземпляра)
Класс является обобщенным понятием, определяющим характеристики и поведение множества конкретных объектов этого класса, называемых экземплярами (объектами) класса.
Объекты создаются явным или неявным образом (либо программистом, либо системой). Программист создает экземпляр класса с помощью операции new:
Demo a = new Demo(); 
Monster Vasia = new Monster(); 
Monster Petya = new Monster(“Петя“);
Для каждого объекта при его создании в памяти выделяется отдельная область для хранения его данных. 
Кроме того, в классе могут присутствовать статические элементы, которые существуют в единственном экземпляре для всех объектов класса. 
Функциональные элементы класса всегда хранятся в единственном экземпляре.
Описание слайда:
Описание объекта (экземпляра) Класс является обобщенным понятием, определяющим характеристики и поведение множества конкретных объектов этого класса, называемых экземплярами (объектами) класса. Объекты создаются явным или неявным образом (либо программистом, либо системой). Программист создает экземпляр класса с помощью операции new: Demo a = new Demo(); Monster Vasia = new Monster(); Monster Petya = new Monster(“Петя“); Для каждого объекта при его создании в памяти выделяется отдельная область для хранения его данных. Кроме того, в классе могут присутствовать статические элементы, которые существуют в единственном экземпляре для всех объектов класса. Функциональные элементы класса всегда хранятся в единственном экземпляре.

Слайд 53





Данные: поля и константы 
Данные, содержащиеся в классе, могут быть переменными или константами. 
Переменные, описанные в классе, называются полями класса.
При описании полей можно указывать атрибуты и спецификаторы, задающие различные характеристики элементов:
[ атрибуты ] [ спецификаторы ] [ const ] тип имя [ = начальное_значение ]
public int a = 1;
public static string s = "Demo";
double y;
Все поля сначала автоматически инициализируются нулем соответствующего типа (например, полям типа int присваивается 0, а ссылкам на объекты — значение null). После этого полю присваивается значение, заданное при его явной инициализации.
Описание слайда:
Данные: поля и константы Данные, содержащиеся в классе, могут быть переменными или константами. Переменные, описанные в классе, называются полями класса. При описании полей можно указывать атрибуты и спецификаторы, задающие различные характеристики элементов: [ атрибуты ] [ спецификаторы ] [ const ] тип имя [ = начальное_значение ] public int a = 1; public static string s = "Demo"; double y; Все поля сначала автоматически инициализируются нулем соответствующего типа (например, полям типа int присваивается 0, а ссылкам на объекты — значение null). После этого полю присваивается значение, заданное при его явной инициализации.

Слайд 54





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

Слайд 55





Синтаксис метода
[ атрибуты ] [ спецификаторы ] тип имя_метода ( [ параметры ] )  тело_метода
Спецификаторы: new, public, protected, internal, protected internal, private, static, virtual, sealed, override, abstract, extern. 
Метод класса имеет непосредственный доступ к его полям.
Пример:
class Demo {
    double y;                                   // закрытое поле класса
    
    public void Sety( double z ) {     // открытый метод класса
        y = z; 
    }
}
… Demo demo = new Demo();           // где-то в методе другого класса
    demo.Sety(3.12); …                       // вызов метода
Описание слайда:
Синтаксис метода [ атрибуты ] [ спецификаторы ] тип имя_метода ( [ параметры ] ) тело_метода Спецификаторы: new, public, protected, internal, protected internal, private, static, virtual, sealed, override, abstract, extern. Метод класса имеет непосредственный доступ к его полям. Пример: class Demo { double y; // закрытое поле класса public void Sety( double z ) { // открытый метод класса y = z; } } … Demo demo = new Demo(); // где-то в методе другого класса demo.Sety(3.12); … // вызов метода

Слайд 56





Параметры методов
Параметры определяют множество значений аргументов, которые можно передавать в метод. 
Список аргументов при вызове как бы накладывается на список параметров, поэтому они должны попарно соответствовать друг другу. 
Для каждого параметра должны задаваться его тип, имя и, возможно, вид параметра. 
Имя метода вкупе с количеством, типами и спецификаторами его параметров представляет собой сигнатуру метода — то, по чему один метод отличают от других. 
В классе не должно быть методов с одинаковыми сигнатурами.
Метод, описанный со спецификатором static, должен обращаться только к статическим полям класса. 
Статический метод вызывается через имя класса, а обычный — через имя экземпляра.
Описание слайда:
Параметры методов Параметры определяют множество значений аргументов, которые можно передавать в метод. Список аргументов при вызове как бы накладывается на список параметров, поэтому они должны попарно соответствовать друг другу. Для каждого параметра должны задаваться его тип, имя и, возможно, вид параметра. Имя метода вкупе с количеством, типами и спецификаторами его параметров представляет собой сигнатуру метода — то, по чему один метод отличают от других. В классе не должно быть методов с одинаковыми сигнатурами. Метод, описанный со спецификатором static, должен обращаться только к статическим полям класса. Статический метод вызывается через имя класса, а обычный — через имя экземпляра.

Слайд 57





Вызов метода 
Вычисляются выражения, стоящие на месте аргументов.
Выделяется память под параметры метода.
Каждому из параметров сопоставляется соответствующий аргумент. При этом проверяется соответствие типов аргументов и параметров и при необходимости выполняется их преобразование. При несоответствии типов выдается диагностическое сообщение.
Выполняется тело метода.
Если метод возвращает значение, оно передается в точку вызова; если метод имеет тип void, управление передается на оператор, следующий после вызова.
Описание слайда:
Вызов метода Вычисляются выражения, стоящие на месте аргументов. Выделяется память под параметры метода. Каждому из параметров сопоставляется соответствующий аргумент. При этом проверяется соответствие типов аргументов и параметров и при необходимости выполняется их преобразование. При несоответствии типов выдается диагностическое сообщение. Выполняется тело метода. Если метод возвращает значение, оно передается в точку вызова; если метод имеет тип void, управление передается на оператор, следующий после вызова.

Слайд 58





Способы передачи аргументов в метод
При передаче по значению метод получает копии значений аргументов, и операторы метода работают с этими копиями. 
При передаче по ссылке (по адресу) метод получает копии адресов аргументов и осуществляет доступ к аргументам по этим адресам.
Описание слайда:
Способы передачи аргументов в метод При передаче по значению метод получает копии значений аргументов, и операторы метода работают с этими копиями. При передаче по ссылке (по адресу) метод получает копии адресов аргументов и осуществляет доступ к аргументам по этим адресам.

Слайд 59





Типы параметров
В С# четыре типа параметров:
 параметры-значения - для исходных данных метода;
 параметры-ссылки (ref) - для изменения аргумента;
 выходные параметры (out) – для формирования аргумента;
 параметры-массивы (params) – для переменного кол-ва аргументов.
Описание слайда:
Типы параметров В С# четыре типа параметров: параметры-значения - для исходных данных метода; параметры-ссылки (ref) - для изменения аргумента; выходные параметры (out) – для формирования аргумента; параметры-массивы (params) – для переменного кол-ва аргументов.

Слайд 60





Передача аргумента по значению
Описание слайда:
Передача аргумента по значению

Слайд 61





Передача аргумента по ссылке (ref, out)
Описание слайда:
Передача аргумента по ссылке (ref, out)

Слайд 62





Пример: параметры-значения и ссылки ref
using System;
namespace ConsoleApplication1
{   class Class1
    {   static void P( int a, ref int b )
        {
            a = 44; b = 33;
            Console.WriteLine( "внутри метода {0} {1}", a, b );
        }
        static void Main()
        {
            int a = 2, b = 4;
            Console.WriteLine( "до вызова     {0} {1}", a, b );
            P( a, ref b );
            Console.WriteLine( "после вызова  {0} {1}", a, b );
}}}
Описание слайда:
Пример: параметры-значения и ссылки ref using System; namespace ConsoleApplication1 { class Class1 { static void P( int a, ref int b ) { a = 44; b = 33; Console.WriteLine( "внутри метода {0} {1}", a, b ); } static void Main() { int a = 2, b = 4; Console.WriteLine( "до вызова {0} {1}", a, b ); P( a, ref b ); Console.WriteLine( "после вызова {0} {1}", a, b ); }}}

Слайд 63





Пример: выходные параметры out
using System;
namespace ConsoleApplication1
{   class Class1
    {   static void P( int x, out int y ) 
        {
            x = 44; y = 33;
            Console.WriteLine( "внутри метода {0} {1}", x, y );
        }
        static void Main()
        {
            int a = 2, b;         // инициализация b не требуется
            P( a, out b );
            Console.WriteLine( "после вызова  {0} {1}", a, b );
}}}
Описание слайда:
Пример: выходные параметры out using System; namespace ConsoleApplication1 { class Class1 { static void P( int x, out int y ) { x = 44; y = 33; Console.WriteLine( "внутри метода {0} {1}", x, y ); } static void Main() { int a = 2, b; // инициализация b не требуется P( a, out b ); Console.WriteLine( "после вызова {0} {1}", a, b ); }}}

Слайд 64





Summary: Правила применения параметров
Для параметров-значений используется передача по значению. Этот способ применяется для исходных данных метода.
При вызове метода на месте параметра, передаваемого по значению, может находиться выражение (а также его частные случаи — переменная или константа). Должно существовать неявное преобразование типа выражения к типу параметра.
Параметры-ссылки и выходные параметры передаются по адресу. Этот способ применяется для передачи побочных результатов метода.
При вызове метода на месте параметра-ссылки ref может находиться только имя инициализированной переменной точно того же типа. Перед именем параметра указывается ключевое слово ref. 
При вызове метода на месте выходного параметра out может находиться только имя переменной точно того же типа. Ее инициализация не требуется. Перед именем параметра указывается ключевое слово out.
Описание слайда:
Summary: Правила применения параметров Для параметров-значений используется передача по значению. Этот способ применяется для исходных данных метода. При вызове метода на месте параметра, передаваемого по значению, может находиться выражение (а также его частные случаи — переменная или константа). Должно существовать неявное преобразование типа выражения к типу параметра. Параметры-ссылки и выходные параметры передаются по адресу. Этот способ применяется для передачи побочных результатов метода. При вызове метода на месте параметра-ссылки ref может находиться только имя инициализированной переменной точно того же типа. Перед именем параметра указывается ключевое слово ref. При вызове метода на месте выходного параметра out может находиться только имя переменной точно того же типа. Ее инициализация не требуется. Перед именем параметра указывается ключевое слово out.

Слайд 65





Ключевое слово this 
Чтобы обеспечить работу метода с полями того объекта, для которого он был вызван, в метод автоматически передается скрытый параметр this, в котором хранится ссылка на вызвавший функцию объект.
Описание слайда:
Ключевое слово this Чтобы обеспечить работу метода с полями того объекта, для которого он был вызван, в метод автоматически передается скрытый параметр this, в котором хранится ссылка на вызвавший функцию объект.

Слайд 66





Использование явного this
В явном виде параметр this применяется: 
1) чтобы возвратить из метода ссылку на вызвавший объект:
class Demo    
{      double y;
        public Demo T()    { return this; }
// 2) для идентификации поля, если его имя совпадает с
//     именем параметра метода:
        public void Sety( double y ) { this.y = y; }
}
Описание слайда:
Использование явного this В явном виде параметр this применяется: 1) чтобы возвратить из метода ссылку на вызвавший объект: class Demo { double y; public Demo T() { return this; } // 2) для идентификации поля, если его имя совпадает с // именем параметра метода: public void Sety( double y ) { this.y = y; } }

Слайд 67





Конструкторы
Конструктор – особый вид метода, предназначенный для инициализации объекта (конструктор экземпляра) или класса (статический конструктор).
Конструктор экземпляра инициализирует данные экземпляра, конструктор класса — данные класса.
Описание слайда:
Конструкторы Конструктор – особый вид метода, предназначенный для инициализации объекта (конструктор экземпляра) или класса (статический конструктор). Конструктор экземпляра инициализирует данные экземпляра, конструктор класса — данные класса.

Слайд 68





Конструкторы экземпляра
Конструктор вызывается автоматически при создании объекта класса с помощью операции new. Имя конструктора совпадает с именем класса. 
Свойства конструкторов:
Конструктор не возвращает значение, даже типа void.
Класс может иметь несколько конструкторов с разными параметрами для разных видов инициализации.
Если программист не указал ни одного конструктора или какие-то поля не были инициализированы, полям значимых типов присваивается нуль, полям ссылочных типов — значение null.
Конструктор, вызываемый без параметров, называется конструктором по умолчанию.
Описание слайда:
Конструкторы экземпляра Конструктор вызывается автоматически при создании объекта класса с помощью операции new. Имя конструктора совпадает с именем класса. Свойства конструкторов: Конструктор не возвращает значение, даже типа void. Класс может иметь несколько конструкторов с разными параметрами для разных видов инициализации. Если программист не указал ни одного конструктора или какие-то поля не были инициализированы, полям значимых типов присваивается нуль, полям ссылочных типов — значение null. Конструктор, вызываемый без параметров, называется конструктором по умолчанию.

Слайд 69





Сквозной пример класса
class Monster {
    public Monster()   // конструктор
    {
            name  = "Noname";
            health = 100;
            ammo = 100;
    }
  public Monster( string name ) : this()
    {
            this.name = name;
     }
  public Monster( int health, int ammo, string name )
     {
         this.name  = name;
         this.health = health > 0 ? health : 0 ;
         this.ammo = ammo > 0 ? ammo : 0 ;
     }
  public string GetName()     // метод
    {  return name;   }
  public int GetAmmo()        // метод
     {  return ammo;}
Описание слайда:
Сквозной пример класса class Monster { public Monster() // конструктор { name = "Noname"; health = 100; ammo = 100; } public Monster( string name ) : this() { this.name = name; } public Monster( int health, int ammo, string name ) { this.name = name; this.health = health > 0 ? health : 0 ; this.ammo = ammo > 0 ? ammo : 0 ; } public string GetName() // метод { return name; } public int GetAmmo() // метод { return ammo;}

Слайд 70





Свойства
Свойства служат для организации доступа к полям класса. Как правило, свойство определяет методы доступа к закрытому полю. 
Свойства обеспечивают разделение между внутренним состоянием объекта и его интерфейсом.
Синтаксис свойства:
[ спецификаторы ] тип имя_свойства
{
    [ get код_доступа ]
    [ set код_доступа ]
}
При обращении к свойству автоматически вызываются указанные в нем блоки чтения (get) и установки (set).
Может отсутствовать либо часть get, либо set, но не обе одновременно. Если отсутствует часть set, свойство доступно только для чтения (read-only), если отсутствует get - только для записи (write-only).
Описание слайда:
Свойства Свойства служат для организации доступа к полям класса. Как правило, свойство определяет методы доступа к закрытому полю. Свойства обеспечивают разделение между внутренним состоянием объекта и его интерфейсом. Синтаксис свойства: [ спецификаторы ] тип имя_свойства { [ get код_доступа ] [ set код_доступа ] } При обращении к свойству автоматически вызываются указанные в нем блоки чтения (get) и установки (set). Может отсутствовать либо часть get, либо set, но не обе одновременно. Если отсутствует часть set, свойство доступно только для чтения (read-only), если отсутствует get - только для записи (write-only).

Слайд 71






Пример: счетчик (свойства) 
class Counter
{      public Counter() { }
        public Counter( int n ) { this.n = n > 0 ? n : 0; }
        public int N
        {  get { return n; }
            set { n = value > 0 ? value : 0; }
        }  
// или: set { if (value > 0) n = value; else throw new Exception();}
        int n;        // поле, связанное со свойством N
}
class Program
{     static void Main(string[] args)
       {    Counter num = new Counter();
             num.N = 5;           //   работает set  
             int a = num.N;      //   работает get
             num.N++;            //   работает get, а потом set 
             ++num.N;            //   работает get, а потом set 
}}
Описание слайда:
Пример: счетчик (свойства) class Counter { public Counter() { } public Counter( int n ) { this.n = n > 0 ? n : 0; } public int N { get { return n; } set { n = value > 0 ? value : 0; } } // или: set { if (value > 0) n = value; else throw new Exception();} int n; // поле, связанное со свойством N } class Program { static void Main(string[] args) { Counter num = new Counter(); num.N = 5; // работает set int a = num.N; // работает get num.N++; // работает get, а потом set ++num.N; // работает get, а потом set }}

Слайд 72





Сквозной пример класса: свойства
class Monster {
    public Monster()      // конструктор
    {
            this.name  = "Noname";
            this.health = 100;
            this.ammo = 100;
    }
  public Monster( string name ) : this()
    {
            this.name = name;
     }
  public Monster( int health, int ammo, string name )
     {
            this.name  = name;
            this.health = health;
            this.ammo = ammo;
     }
  public string GetName()     // метод
    {  return name;   }
  public int GetAmmo()        // метод
     {  return ammo;}
Описание слайда:
Сквозной пример класса: свойства class Monster { public Monster() // конструктор { this.name = "Noname"; this.health = 100; this.ammo = 100; } public Monster( string name ) : this() { this.name = name; } public Monster( int health, int ammo, string name ) { this.name = name; this.health = health; this.ammo = ammo; } public string GetName() // метод { return name; } public int GetAmmo() // метод { return ammo;}

Слайд 73





Перегрузка методов 
Использование нескольких методов с одним и тем же именем, но различными типами параметров называется перегрузкой методов. 
Компилятор определяет, какой именно метод требуется вызвать, по типу фактических параметров. Это называется разрешением (resolution) перегрузки. 
                   // Возвращает наибольшее из двух целых:
int max( int a, int b )
                  // Возвращает наибольшее из трех целых:
int max( int a, int b, int c )
               // Возвращает наибольшее из первого параметра 
               // и длины второго:
int max ( int a, string b )
...
Console.WriteLine( max( 1, 2 ) );
Console.WriteLine( max( 1, 2, 3 ) );
Console.WriteLine( max( 1, "2" ) );
Перегрузка методов является проявлением полиморфизма
Описание слайда:
Перегрузка методов Использование нескольких методов с одним и тем же именем, но различными типами параметров называется перегрузкой методов. Компилятор определяет, какой именно метод требуется вызвать, по типу фактических параметров. Это называется разрешением (resolution) перегрузки. // Возвращает наибольшее из двух целых: int max( int a, int b ) // Возвращает наибольшее из трех целых: int max( int a, int b, int c ) // Возвращает наибольшее из первого параметра // и длины второго: int max ( int a, string b ) ... Console.WriteLine( max( 1, 2 ) ); Console.WriteLine( max( 1, 2, 3 ) ); Console.WriteLine( max( 1, "2" ) ); Перегрузка методов является проявлением полиморфизма

Слайд 74





Операции класса 
В С# можно переопределить для своих классов действие большинства операций. Это позволяет применять экземпляры объектов в составе выражений аналогично переменным стандартных типов:
     MyObject a, b, c;  ...  
     c = a + b;                // операция сложения класса MyObject 
Определение собственных операций класса называют перегрузкой операций. 
Операции класса описываются с помощью методов специального вида (функций-операций):
public static имя_класса operator операция( параметры) {… }
Пример:   public static MyObject operator --( MyObject m ) { … }
В C# три вида операций класса: унарные, бинарные и операции преобразования типа.
Описание слайда:
Операции класса В С# можно переопределить для своих классов действие большинства операций. Это позволяет применять экземпляры объектов в составе выражений аналогично переменным стандартных типов: MyObject a, b, c; ... c = a + b; // операция сложения класса MyObject Определение собственных операций класса называют перегрузкой операций. Операции класса описываются с помощью методов специального вида (функций-операций): public static имя_класса operator операция( параметры) {… } Пример: public static MyObject operator --( MyObject m ) { … } В C# три вида операций класса: унарные, бинарные и операции преобразования типа.

Слайд 75






Пример: счетчик (операция ++) 
class Counter
{      public Counter() { }
        public Counter( int n ) { this.n = n > 0 ? n : 0; }
        public static Counter operator ++(Counter param)
        {
            Counter temp = new Counter(param.n + 1);
            return temp;
        }
        int n; 
}
class Program
{     static void Main(string[] args)
       {    Counter num = new Counter();
             num++;    ++num;
             ... 
       }
}
Описание слайда:
Пример: счетчик (операция ++) class Counter { public Counter() { } public Counter( int n ) { this.n = n > 0 ? n : 0; } public static Counter operator ++(Counter param) { Counter temp = new Counter(param.n + 1); return temp; } int n; } class Program { static void Main(string[] args) { Counter num = new Counter(); num++; ++num; ... } }

Слайд 76






Пример: счетчик (операция +) 
class Counter
{     ...
         public static Counter operator +(Counter param, int delta)
        {  Counter temp = new Counter(param.n + delta);
            return temp;
        }
        public static Counter operator +(int delta, Counter param)
        {  Counter temp = new Counter(param.n + delta);
            return temp;
        }
        int n; 
}
class Program
{     static void Main(string[] args)
      {    Counter num = new Counter(); Counter num2 = new Counter();
            num2 = num + 3;      num2 = 3 + num;
             ... 
       }
}
Описание слайда:
Пример: счетчик (операция +) class Counter { ... public static Counter operator +(Counter param, int delta) { Counter temp = new Counter(param.n + delta); return temp; } public static Counter operator +(int delta, Counter param) { Counter temp = new Counter(param.n + delta); return temp; } int n; } class Program { static void Main(string[] args) { Counter num = new Counter(); Counter num2 = new Counter(); num2 = num + 3; num2 = 3 + num; ... } }

Слайд 77





Проектирование класса
Summary
Описание слайда:
Проектирование класса Summary

Слайд 78





Интерфейс класса 
При создании класса следует хорошо продумать его интерфейс — средства работы с классом, доступные использующим его программистам. 
Интерфейс хорошо спроектированного класса интуитивно ясен, непротиворечив и обозрим. Как правило, он не должен включать поля данных.
В идеале интерфейс должен быть полным (предоставлять возможность выполнять любые разумные действия с классом) и минимально необходимым (без дублирования и пересечения возможностей методов).
Описание слайда:
Интерфейс класса При создании класса следует хорошо продумать его интерфейс — средства работы с классом, доступные использующим его программистам. Интерфейс хорошо спроектированного класса интуитивно ясен, непротиворечив и обозрим. Как правило, он не должен включать поля данных. В идеале интерфейс должен быть полным (предоставлять возможность выполнять любые разумные действия с классом) и минимально необходимым (без дублирования и пересечения возможностей методов).

Слайд 79





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

Слайд 80





Элементы класса
Методы определяют поведение класса. Каждый метод класса должен решать только одну задачу.
Создание любого метода следует начинать с его интерфейса (заголовка). Необходимо четко представлять себе, какие параметры метод должен получать и какие результаты формировать. Входные параметры обычно перечисляют в начале списка параметров. 
Поля, характеризующие класс в целом, следует описывать как статические. 
Все литералы, связанные с классом, описываются как поля-константы с именами, отражающими их смысл.
Необходимо стремиться к максимальному сокращению области действия каждой переменной. Это упрощает отладку программы, поскольку ограничивает область поиска ошибки.
Описание слайда:
Элементы класса Методы определяют поведение класса. Каждый метод класса должен решать только одну задачу. Создание любого метода следует начинать с его интерфейса (заголовка). Необходимо четко представлять себе, какие параметры метод должен получать и какие результаты формировать. Входные параметры обычно перечисляют в начале списка параметров. Поля, характеризующие класс в целом, следует описывать как статические. Все литералы, связанные с классом, описываются как поля-константы с именами, отражающими их смысл. Необходимо стремиться к максимальному сокращению области действия каждой переменной. Это упрощает отладку программы, поскольку ограничивает область поиска ошибки.

Слайд 81





Типы и структуры данных
Описание слайда:
Типы и структуры данных

Слайд 82





Перечислимый тип данных
Перечисление — отдельный тип-значение, содержащий совокупность именованных констант. 
Пример:
 
enum Color : long
{
    Red,
    Green,
    Blue
}
Каждый элемент перечисления имеет связанное с ним константное значение, тип которого определяется базовым типом перечисления.
Базовые типы: byte, sbyte, short, ushort, int, uint, long и ulong. По умолчанию – int.
Описание слайда:
Перечислимый тип данных Перечисление — отдельный тип-значение, содержащий совокупность именованных констант. Пример:   enum Color : long { Red, Green, Blue } Каждый элемент перечисления имеет связанное с ним константное значение, тип которого определяется базовым типом перечисления. Базовые типы: byte, sbyte, short, ushort, int, uint, long и ulong. По умолчанию – int.

Слайд 83





Массивы

 Массив — ограниченная совокупность однотипных величин
 Элементы массива имеют одно и то же имя, а различаются по порядковому номеру (индексу)
 Виды массивов в C#:
одномерные
многомерные (например, двумерные, или прямоугольные)
массивы массивов (др. термины: невыровненные, ступенчатые).
Описание слайда:
Массивы Массив — ограниченная совокупность однотипных величин Элементы массива имеют одно и то же имя, а различаются по порядковому номеру (индексу) Виды массивов в C#: одномерные многомерные (например, двумерные, или прямоугольные) массивы массивов (др. термины: невыровненные, ступенчатые).

Слайд 84





Создание массива
Массив относится к ссылочным типам данных (располагается в хипе), поэтому создание массива начинается с выделения памяти под его элементы.
Элементами массива могут быть величины как значимых, так и ссылочных типов (в том числе массивы), например:
int[] w = new int[10];               // массив из 10 целых чисел
string[] z = new string[100];            // массив из 100 строк
Monster [] s = new Monster[5];      // массив из 5 монстров
double[,] t = new double[2, 10];     // прямоуг. массив 2х10
int[,,,] m = new int[2,2,2,2];                // 4-xмерный массив
int[][][] a = new int[2][][]; …   // массив массивов массивов
Массив значимых типов хранит значения, массив ссылочных типов — ссылки на элементы. 
Всем элементам при создании массива присваиваются значения по умолчанию: нули для значимых типов и null для ссылочных.
Описание слайда:
Создание массива Массив относится к ссылочным типам данных (располагается в хипе), поэтому создание массива начинается с выделения памяти под его элементы. Элементами массива могут быть величины как значимых, так и ссылочных типов (в том числе массивы), например: int[] w = new int[10]; // массив из 10 целых чисел string[] z = new string[100]; // массив из 100 строк Monster [] s = new Monster[5]; // массив из 5 монстров double[,] t = new double[2, 10]; // прямоуг. массив 2х10 int[,,,] m = new int[2,2,2,2]; // 4-xмерный массив int[][][] a = new int[2][][]; … // массив массивов массивов Массив значимых типов хранит значения, массив ссылочных типов — ссылки на элементы. Всем элементам при создании массива присваиваются значения по умолчанию: нули для значимых типов и null для ссылочных.

Слайд 85





Одномерные массивы 
Варианты описания массива:
тип[] имя;
тип[] имя = new тип [ размерность ];
тип[] имя = { список_инициализаторов };
тип[] имя = new тип [] { список_инициализаторов };
тип[] имя = new тип [ размерность ] { список_инициализаторов };
Примеры описаний (один пример на каждый вариант описания, соответственно):
int[] a;                             //  память под элементы не выделена
int[] b = new int[4];                                  //  элементы равны 0
int[] c = { 61, 2, 5, -9 };                       //  new подразумевается
int[] d = new int[] { 61, 2, 5, -9 };   // размерность вычисляется
int[] e = new int[4] { 61, 2, 5, -9 };       // избыточное описание
Описание слайда:
Одномерные массивы Варианты описания массива: тип[] имя; тип[] имя = new тип [ размерность ]; тип[] имя = { список_инициализаторов }; тип[] имя = new тип [] { список_инициализаторов }; тип[] имя = new тип [ размерность ] { список_инициализаторов }; Примеры описаний (один пример на каждый вариант описания, соответственно): int[] a; // память под элементы не выделена int[] b = new int[4]; // элементы равны 0 int[] c = { 61, 2, 5, -9 }; // new подразумевается int[] d = new int[] { 61, 2, 5, -9 }; // размерность вычисляется int[] e = new int[4] { 61, 2, 5, -9 }; // избыточное описание

Слайд 86





Оператор foreach (упрощенно)
Применяется для перебора элементов массива. Синтаксис:
foreach ( тип имя in имя_массива ) тело_цикла
имя задает локальную по отношению к циклу переменную, которая будет по очереди принимать все значения из массива, например:

int[] massiv =  { 24, 50, 18, 3, 16, -7, 9, -1 };
foreach ( int x in massiv ) Console.WriteLine( x );
Описание слайда:
Оператор foreach (упрощенно) Применяется для перебора элементов массива. Синтаксис: foreach ( тип имя in имя_массива ) тело_цикла имя задает локальную по отношению к циклу переменную, которая будет по очереди принимать все значения из массива, например: int[] massiv = { 24, 50, 18, 3, 16, -7, 9, -1 }; foreach ( int x in massiv ) Console.WriteLine( x );

Слайд 87





Программа в true style 
class Mas_1                  // класс для работы с 1-мерным массивом
{
        int[] a = { 3, 12, 5, -9, 8, -4 };          // для простоты слайда
  
        public void PrintMas()                                 // вывод массива
        {  Console.Write("Массив: ");
            foreach (int elem in a) Console.Write("  " + elem);
            Console.WriteLine();
        }
        public long SumOtr()        // cумма отрицательных элементов
        {  
            long sum_otr = 0; 
            foreach (int elem in a)
                if (elem < 0) sum_otr += elem;
            return sum_otr;
        }
Описание слайда:
Программа в true style  class Mas_1 // класс для работы с 1-мерным массивом { int[] a = { 3, 12, 5, -9, 8, -4 }; // для простоты слайда public void PrintMas() // вывод массива { Console.Write("Массив: "); foreach (int elem in a) Console.Write(" " + elem); Console.WriteLine(); } public long SumOtr() // cумма отрицательных элементов { long sum_otr = 0; foreach (int elem in a) if (elem < 0) sum_otr += elem; return sum_otr; }

Слайд 88





 public int NumOtr()                    // кол-во отрицательных элементов
 public int NumOtr()                    // кол-во отрицательных элементов
        {
            int num_otr = 0;
            foreach (int elem in a)
                if (elem < 0) ++num_otr;
            return num_otr;
        }
 public int MaxElem()                   // максимальный элемент
        {
            int max = a[0];            
            foreach (int elem in a) if (elem > max) max = elem;
            return max;
        }
}
Описание слайда:
public int NumOtr() // кол-во отрицательных элементов public int NumOtr() // кол-во отрицательных элементов { int num_otr = 0; foreach (int elem in a) if (elem < 0) ++num_otr; return num_otr; } public int MaxElem() // максимальный элемент { int max = a[0]; foreach (int elem in a) if (elem > max) max = elem; return max; } }

Слайд 89





class Program                                    // класс-клиент
class Program                                    // класс-клиент
{   static void Main(string[] args)
    {
       Mas_1 mas = new Mas_1();
       mas.PrintMas();

       long sum_otr = mas.SumOtr();
       if (sum_otr != 0) Console.WriteLine("Сумма отриц. = " + sum_otr);
       else Console.WriteLine("Отриц-х эл-тов нет");
      int num_otr = mas.NumOtr();
      if (num_otr != 0) Console.WriteLine("Кол-во отриц. = " + num_otr);
      else Console.WriteLine("Отриц-х эл-тов нет");
                
      Console.WriteLine("Макс. элемент = " + mas.MaxElem());
   }
}
Описание слайда:
class Program // класс-клиент class Program // класс-клиент { static void Main(string[] args) { Mas_1 mas = new Mas_1(); mas.PrintMas(); long sum_otr = mas.SumOtr(); if (sum_otr != 0) Console.WriteLine("Сумма отриц. = " + sum_otr); else Console.WriteLine("Отриц-х эл-тов нет"); int num_otr = mas.NumOtr(); if (num_otr != 0) Console.WriteLine("Кол-во отриц. = " + num_otr); else Console.WriteLine("Отриц-х эл-тов нет"); Console.WriteLine("Макс. элемент = " + mas.MaxElem()); } }

Слайд 90





Пример анализа задания
Найти среднее арифметическое элементов, расположенных между минимумом и максимумом
Варианты результата:
выводится среднее арифметическое
выводится сообщение «таких элементов нет» (мин. и макс. рядом или все элементы массива одинаковы)
Вопрос: если макс. или мин. эл-тов несколько?
Варианты тестовых данных:
минимум левее максимума
наоборот
рядом
более одного мин/макс
все элементы массива равны
все элементы отрицательные
Описание слайда:
Пример анализа задания Найти среднее арифметическое элементов, расположенных между минимумом и максимумом Варианты результата: выводится среднее арифметическое выводится сообщение «таких элементов нет» (мин. и макс. рядом или все элементы массива одинаковы) Вопрос: если макс. или мин. эл-тов несколько? Варианты тестовых данных: минимум левее максимума наоборот рядом более одного мин/макс все элементы массива равны все элементы отрицательные

Слайд 91





Использование методов класса Array 
static void Main()
        {
            int[] a =  { 24, 50, 18, 3, 16, -7, 9, -1 };
            PrintArray( "Исходный массив:", a );
            Console.WriteLine( Array.IndexOf( a, 18 ) ); 
            Array.Sort(a);     // Array.Sort(a, 1, 5);
            PrintArray( "Упорядоченный массив:", a );
            Console.WriteLine( Array.BinarySearch( a, 18) );
            Array.Reverse(a);     // Array.Reverse(a, 2, 4);  
        }
public static void PrintArray( string header, int[] a ) {
            Console.WriteLine( header );
            for ( int i = 0; i < a.Length; ++i )
                Console.Write( "\t" + a[i] );
            Console.WriteLine();
        }
Описание слайда:
Использование методов класса Array static void Main() { int[] a = { 24, 50, 18, 3, 16, -7, 9, -1 }; PrintArray( "Исходный массив:", a ); Console.WriteLine( Array.IndexOf( a, 18 ) ); Array.Sort(a); // Array.Sort(a, 1, 5); PrintArray( "Упорядоченный массив:", a ); Console.WriteLine( Array.BinarySearch( a, 18) ); Array.Reverse(a); // Array.Reverse(a, 2, 4); } public static void PrintArray( string header, int[] a ) { Console.WriteLine( header ); for ( int i = 0; i < a.Length; ++i ) Console.Write( "\t" + a[i] ); Console.WriteLine(); }

Слайд 92





Что вы должны уметь найти в массиве:
минимум/максимум [по модулю]
номер минимума/максимума [по модулю]
номер первого/второго/последнего положительного/отрицательного/нулевого эл-та
сумма/произведение/количество/сред. арифм-е положительных/отрицательных/нулевых эл-тов
упорядочить массив НЕ методом пузырька.
анализировать все возможные варианты расположения исходных данных
Описание слайда:
Что вы должны уметь найти в массиве: минимум/максимум [по модулю] номер минимума/максимума [по модулю] номер первого/второго/последнего положительного/отрицательного/нулевого эл-та сумма/произведение/количество/сред. арифм-е положительных/отрицательных/нулевых эл-тов упорядочить массив НЕ методом пузырька. анализировать все возможные варианты расположения исходных данных

Слайд 93





Прямоугольные массивы 
Прямоугольный массив имеет более одного измерения. Чаще всего в программах используются двумерные массивы. Варианты описания двумерного массива:
тип[,] имя;
тип[,] имя = new тип [ разм_1, разм_2 ];
тип[,] имя = { список_инициализаторов };
тип[,] имя = new тип [,] { список_инициализаторов };
тип[,] имя = new тип [ разм_1, разм_2 ] { список_инициализаторов };
Примеры описаний (один пример на каждый вариант описания):
int[,] a;                                                        // элементов нет
int[,] b = new int[2, 3];                                 // элементы равны 0
int[,] c = {{1, 2, 3}, {4, 5, 6}};                    // new подразумевается
int[,] c = new int[,] {{1, 2, 3}, {4, 5, 6}};     // разм-сть вычисляется
int[,] d = new int[2,3] {{1, 2, 3}, {4, 5, 6}}; // избыточное описание
Описание слайда:
Прямоугольные массивы Прямоугольный массив имеет более одного измерения. Чаще всего в программах используются двумерные массивы. Варианты описания двумерного массива: тип[,] имя; тип[,] имя = new тип [ разм_1, разм_2 ]; тип[,] имя = { список_инициализаторов }; тип[,] имя = new тип [,] { список_инициализаторов }; тип[,] имя = new тип [ разм_1, разм_2 ] { список_инициализаторов }; Примеры описаний (один пример на каждый вариант описания): int[,] a; // элементов нет int[,] b = new int[2, 3]; // элементы равны 0 int[,] c = {{1, 2, 3}, {4, 5, 6}}; // new подразумевается int[,] c = new int[,] {{1, 2, 3}, {4, 5, 6}}; // разм-сть вычисляется int[,] d = new int[2,3] {{1, 2, 3}, {4, 5, 6}}; // избыточное описание

Слайд 94





Пример
Описание слайда:
Пример

Слайд 95






const int m = 3, n = 4;
int[,] a = new int[m, n] {
                { 2,-2, 8, 9 }, 
                {-4,-5, 6,-2 },
                { 7, 0, 1, 1 } 
            };
Console.WriteLine( "Исходный массив:" );
for ( int i = 0; i < m; ++i )
{   for ( int j = 0; j < n; ++j )
         Console.Write( "\t" + a[i, j] );
     Console.WriteLine();
}
Описание слайда:
const int m = 3, n = 4; int[,] a = new int[m, n] { { 2,-2, 8, 9 }, {-4,-5, 6,-2 }, { 7, 0, 1, 1 } }; Console.WriteLine( "Исходный массив:" ); for ( int i = 0; i < m; ++i ) { for ( int j = 0; j < n; ++j ) Console.Write( "\t" + a[i, j] ); Console.WriteLine(); }

Слайд 96





int nPosEl;
int nPosEl;
for ( int i = 0; i < m; ++i )
{
      nPosEl = 0;
      for ( int j = 0; j < n; ++j )
           if ( a[i, j] > 0 ) ++nPosEl;
      Console.WriteLine( "В строке {0} {1} положит-х эл-в", i, nPosEl);
}
double sum = 0;
foreach ( int x in a ) sum += x;  // все элементы двумерного массива!
Console.WriteLine( "Среднее арифметическое всех элементов: " 
                             + sum / m / n );
Описание слайда:
int nPosEl; int nPosEl; for ( int i = 0; i < m; ++i ) { nPosEl = 0; for ( int j = 0; j < n; ++j ) if ( a[i, j] > 0 ) ++nPosEl; Console.WriteLine( "В строке {0} {1} положит-х эл-в", i, nPosEl); } double sum = 0; foreach ( int x in a ) sum += x; // все элементы двумерного массива! Console.WriteLine( "Среднее арифметическое всех элементов: " + sum / m / n );

Слайд 97





Строки типа string 
Тип string предназначен для работы со строками символов в кодировке Unicode. Ему соответствует базовый класс System.String библиотеки .NET.
Создание строки:
string s;                                 // инициализация отложена
string t = "qqq";   // инициализация строковым литералом
string u = new string(' ', 20);            // с пом. конструктора
string v = new string( a ); // создание из массива символов
// создание массива символов:  char[] a = { '0', '0', '0' };
Описание слайда:
Строки типа string Тип string предназначен для работы со строками символов в кодировке Unicode. Ему соответствует базовый класс System.String библиотеки .NET. Создание строки: string s; // инициализация отложена string t = "qqq"; // инициализация строковым литералом string u = new string(' ', 20); // с пом. конструктора string v = new string( a ); // создание из массива символов // создание массива символов: char[] a = { '0', '0', '0' };

Слайд 98





Операции для строк
присваивание (=);
проверка на равенство (==);
проверка на неравенство (!=);
обращение по индексу ([]);
сцепление (конкатенация) строк (+).
Строки равны, если имеют одинаковое количество символов и совпадают посимвольно.
Обращаться к отдельному элементу строки по индексу можно только для получения значения, но не для его изменения. Это связано с тем, что строки типа string относятся к неизменяемым типам данных. 
Методы, изменяющие содержимое строки, на самом деле создают новую копию строки. Неиспользуемые «старые» копии автоматически удаляются сборщиком мусора.
Описание слайда:
Операции для строк присваивание (=); проверка на равенство (==); проверка на неравенство (!=); обращение по индексу ([]); сцепление (конкатенация) строк (+). Строки равны, если имеют одинаковое количество символов и совпадают посимвольно. Обращаться к отдельному элементу строки по индексу можно только для получения значения, но не для его изменения. Это связано с тем, что строки типа string относятся к неизменяемым типам данных. Методы, изменяющие содержимое строки, на самом деле создают новую копию строки. Неиспользуемые «старые» копии автоматически удаляются сборщиком мусора.

Слайд 99





Пример: разбиение текста на слова
StreamReader inputFile = new StreamReader("example.txt");
string text = inputFile.ReadToEnd();
char[] delims = ".,;:!?\n\xD\xA\" ".ToCharArray();
string[] words = text.Split(delims,
                                       StringSplitOptions.RemoveEmptyEntries);
foreach (string word in words) Console.WriteLine(word);
Console.WriteLine("Cлов в тексте: " + words.Length);
// слова, оканчивающиеся на «а»:
foreach (string word in words) 
     if (word[word.Length-1] == 'а') Console.WriteLine(word);
Описание слайда:
Пример: разбиение текста на слова StreamReader inputFile = new StreamReader("example.txt"); string text = inputFile.ReadToEnd(); char[] delims = ".,;:!?\n\xD\xA\" ".ToCharArray(); string[] words = text.Split(delims, StringSplitOptions.RemoveEmptyEntries); foreach (string word in words) Console.WriteLine(word); Console.WriteLine("Cлов в тексте: " + words.Length); // слова, оканчивающиеся на «а»: foreach (string word in words) if (word[word.Length-1] == 'а') Console.WriteLine(word);

Слайд 100





Регулярные выражения
Регулярное выражение — шаблон (образец), по которому выполняется поиск соответствующего ему фрагмента текста. 
  тег html:  
                <[^>]+>
российский номер автомобиля:
    	[A-Z]\d{3}[A-Z]{2}\d\dRUS
  IP-адрес: 
       \d\d?\d?\.\d\d?\d?\.\d\d?\d?\.\d\d?\d?
Регулярные выражения предназначены для обработки текстовой информации и обеспечивают:
  эффективный поиск в тексте по заданному шаблону;
  редактирование, замену и удаление подстрок;
  формирование итоговых отчетов по результатам работы с текстом.
Описание слайда:
Регулярные выражения Регулярное выражение — шаблон (образец), по которому выполняется поиск соответствующего ему фрагмента текста. тег html: <[^>]+> российский номер автомобиля: [A-Z]\d{3}[A-Z]{2}\d\dRUS IP-адрес: \d\d?\d?\.\d\d?\d?\.\d\d?\d?\.\d\d?\d? Регулярные выражения предназначены для обработки текстовой информации и обеспечивают: эффективный поиск в тексте по заданному шаблону; редактирование, замену и удаление подстрок; формирование итоговых отчетов по результатам работы с текстом.

Слайд 101





Язык описания регулярных выражений
Язык описания регулярных выражений состоит из символов двух видов: обычных и метасимволов.
Обычный символ представляет в выражении сам себя.
Метасимвол:
класс символов (например, любая цифра \d или буква \w) 
уточняющий символ (например, ^).
повторитель (например, +).
Примеры:
выражение для поиска в тексте фрагмента «Вася» записывается с помощью четырех обычных символов «Вася»
выражение для поиска двух цифр, идущих подряд, состоит из двух метасимволов «\d\d»
выражение для поиска фрагментов вида «Вариант 1», «Вариант 2», …, «Вариант 9» имеет вид «Вариант \d» 
выражение для поиска фрагментов вида «Вариант 1», «Вариант 23», «Вариант 719», …, имеет вид «Вариант \d+»
Описание слайда:
Язык описания регулярных выражений Язык описания регулярных выражений состоит из символов двух видов: обычных и метасимволов. Обычный символ представляет в выражении сам себя. Метасимвол: класс символов (например, любая цифра \d или буква \w) уточняющий символ (например, ^). повторитель (например, +). Примеры: выражение для поиска в тексте фрагмента «Вася» записывается с помощью четырех обычных символов «Вася» выражение для поиска двух цифр, идущих подряд, состоит из двух метасимволов «\d\d» выражение для поиска фрагментов вида «Вариант 1», «Вариант 2», …, «Вариант 9» имеет вид «Вариант \d» выражение для поиска фрагментов вида «Вариант 1», «Вариант 23», «Вариант 719», …, имеет вид «Вариант \d+»

Слайд 102





Метасимволы - классы символов
Описание слайда:
Метасимволы - классы символов

Слайд 103





продолжение таблицы
Описание слайда:
продолжение таблицы

Слайд 104





Повторители
Описание слайда:
Повторители

Слайд 105





Примеры простых регулярных выражений 
целое число (возможно, со знаком):
    	[-+]?\d+
вещественное число (может иметь знак и дробную часть, отделенную точкой):
    	[-+]?\d+\.?\d*
российский номер автомобиля (упрощенно):
    	[A-Z]\d{3}[A-Z]{2}\d\dRUS
ip-адрес (упрощенно):
		(\d{1,3}\.){3}\d{1,3}
Описание слайда:
Примеры простых регулярных выражений целое число (возможно, со знаком): [-+]?\d+ вещественное число (может иметь знак и дробную часть, отделенную точкой): [-+]?\d+\.?\d* российский номер автомобиля (упрощенно): [A-Z]\d{3}[A-Z]{2}\d\dRUS ip-адрес (упрощенно): (\d{1,3}\.){3}\d{1,3}

Слайд 106





Поддержка регулярных выражений в .NET
Для поддержки регулярных выражений в библиотеку .NET включены классы, объединенные в пространство имен System.Text.RegularExpressions.
Основной класс – Regex. Он реализует подсистему обработки регулярных выражений.
 Подсистеме требуется предоставить:
Шаблон (регулярное выражение), соответствия которому требуется найти в тексте. 
Текст, который требуется проанализировать с помощью шаблона. 
См.:
http://msdn.microsoft.com/ru-ru/library/hs600312.aspx?ppud=4
Описание слайда:
Поддержка регулярных выражений в .NET Для поддержки регулярных выражений в библиотеку .NET включены классы, объединенные в пространство имен System.Text.RegularExpressions. Основной класс – Regex. Он реализует подсистему обработки регулярных выражений. Подсистеме требуется предоставить: Шаблон (регулярное выражение), соответствия которому требуется найти в тексте. Текст, который требуется проанализировать с помощью шаблона. См.: http://msdn.microsoft.com/ru-ru/library/hs600312.aspx?ppud=4

Слайд 107





Методы класса Regex 
позволяют выполнять следующие действия: 
Определить, встречается ли во входном тексте шаблон регулярного выражения (метод IsMatch). 
Извлечь из текста одно или все вхождения, соответствующие шаблону регулярного выражения (методы Match или Matches). 
Заменить текст, соответствующий шаблону регулярного выражения (метод Replace). 
Разделить строку на массив строк (метод Split).
Описание слайда:
Методы класса Regex позволяют выполнять следующие действия: Определить, встречается ли во входном тексте шаблон регулярного выражения (метод IsMatch). Извлечь из текста одно или все вхождения, соответствующие шаблону регулярного выражения (методы Match или Matches). Заменить текст, соответствующий шаблону регулярного выражения (метод Replace). Разделить строку на массив строк (метод Split).

Слайд 108





Пример использования Regex.IsMatch
using System; 
using System.Text.RegularExpressions; 
public class Example
 { public static void Main()
    { string[] values = { "111-22-3333", "111-2-3333"};
       string pattern = @"^\d{3}-\d{2}-\d{4}$";
       foreach (string value in values)
        { if (Regex.IsMatch(value, pattern))
              Console.WriteLine("{0} is a valid SSN.", value);
          else Console.WriteLine("{0}: Invalid", value);
 } } }
 // Вывод:
 // 111-22-3333 is a valid SSN.
 // 111-2-3333: Invalid
Описание слайда:
Пример использования Regex.IsMatch using System; using System.Text.RegularExpressions; public class Example { public static void Main() { string[] values = { "111-22-3333", "111-2-3333"}; string pattern = @"^\d{3}-\d{2}-\d{4}$"; foreach (string value in values) { if (Regex.IsMatch(value, pattern)) Console.WriteLine("{0} is a valid SSN.", value); else Console.WriteLine("{0}: Invalid", value); } } } // Вывод: // 111-22-3333 is a valid SSN. // 111-2-3333: Invalid

Слайд 109





Абстрактные структуры данных 
Массив
   конечная совокупность однотипных величин. Занимает непрерывную область памяти и предоставляет прямой (произвольный) доступ к элементам по индексу. 
Линейный список
Стек
Очередь 
Бинарное дерево
Хеш-таблица (ассоциативный массив, словарь)
Граф
Множество
Описание слайда:
Абстрактные структуры данных Массив конечная совокупность однотипных величин. Занимает непрерывную область памяти и предоставляет прямой (произвольный) доступ к элементам по индексу. Линейный список Стек Очередь Бинарное дерево Хеш-таблица (ассоциативный массив, словарь) Граф Множество

Слайд 110





Контейнеры  http://msdn.microsoft.com/ru-ru/library/ybcx56wz.aspx?ppud=4
Контейнер (коллекция) - стандартный класс, реализующий абстрактную структуру данных. 
Для каждого типа коллекции определены методы работы с ее элементами, не зависящие от конкретного типа хранимых данных.
Использование коллекций позволяет сократить сроки разработки программ и повысить их надежность. 
Каждый вид коллекции поддерживает свой набор операций над данными, и быстродействие этих операций может быть разным. 
Выбор вида коллекции зависит от того, что требуется делать с данными в программе и какие требования предъявляются к ее быстродействию. 
В библиотеке .NET определено множество стандартных контейнеров.
Основные пространства имен, в которых они описаны  — System.Collections, System.Collections.Specialized и System.Collections.Generic
Описание слайда:
Контейнеры http://msdn.microsoft.com/ru-ru/library/ybcx56wz.aspx?ppud=4 Контейнер (коллекция) - стандартный класс, реализующий абстрактную структуру данных. Для каждого типа коллекции определены методы работы с ее элементами, не зависящие от конкретного типа хранимых данных. Использование коллекций позволяет сократить сроки разработки программ и повысить их надежность. Каждый вид коллекции поддерживает свой набор операций над данными, и быстродействие этих операций может быть разным. Выбор вида коллекции зависит от того, что требуется делать с данными в программе и какие требования предъявляются к ее быстродействию. В библиотеке .NET определено множество стандартных контейнеров. Основные пространства имен, в которых они описаны  — System.Collections, System.Collections.Specialized и System.Collections.Generic

Слайд 111





Параметризованные коллекции
(классы-прототипы, generics) 
- классы, имеющие типы данных в качестве параметров
Описание слайда:
Параметризованные коллекции (классы-прототипы, generics) - классы, имеющие типы данных в качестве параметров

Слайд 112





Повторение: контейнеры и файлы
Описание слайда:
Повторение: контейнеры и файлы

Слайд 113





Пример использования класса List
using System;
using System.Collections.Generic;
namespace ConsoleApplication1{
class Program {
        static void Main()  {
		  List<int> lint = new List<int>();
            lint.Add( 5 ); lint.Add( 1 ); lint.Add( 3 );
            lint.Sort();
            int a = lint[2];
            Console.WriteLine( a );
            foreach ( int x in lint ) Console.Write( x + " ");
}}}
Описание слайда:
Пример использования класса List using System; using System.Collections.Generic; namespace ConsoleApplication1{ class Program { static void Main() { List<int> lint = new List<int>(); lint.Add( 5 ); lint.Add( 1 ); lint.Add( 3 ); lint.Sort(); int a = lint[2]; Console.WriteLine( a ); foreach ( int x in lint ) Console.Write( x + " "); }}}

Слайд 114





Общие принципы работы с файлами 
Чтение (ввод)  — передача данных с внешнего устройства в оперативную память, обратный процесс — запись (вывод). 
Ввод-вывод в C# выполняется с помощью подсистемы ввода-вывода и классов библиотеки .NET. Обмен данными реализуется с помощью потоков.
Поток (stream) — абстрактное понятие, относящееся к любому переносу данных от источника к приемнику. Потоки обеспечивают надежную работу как со стандартными, так и с определенными пользователем типами данных, а также единообразный и понятный синтаксис. 
Поток определяется как последовательность байтов и не зависит от конкретного устройства, с которым производится обмен.
Обмен с потоком для повышения скорости передачи данных производится, как правило, через буфер. Буфер выделяется для каждого открытого файла.
Описание слайда:
Общие принципы работы с файлами Чтение (ввод)  — передача данных с внешнего устройства в оперативную память, обратный процесс — запись (вывод). Ввод-вывод в C# выполняется с помощью подсистемы ввода-вывода и классов библиотеки .NET. Обмен данными реализуется с помощью потоков. Поток (stream) — абстрактное понятие, относящееся к любому переносу данных от источника к приемнику. Потоки обеспечивают надежную работу как со стандартными, так и с определенными пользователем типами данных, а также единообразный и понятный синтаксис. Поток определяется как последовательность байтов и не зависит от конкретного устройства, с которым производится обмен. Обмен с потоком для повышения скорости передачи данных производится, как правило, через буфер. Буфер выделяется для каждого открытого файла.

Слайд 115





Уровни обмена с внешними устройствами
Выполнять обмен с внешними устройствами можно на уровне:

двоичного представления данных 
(BinaryReader, BinaryWriter);

байтов 
(FileStream);

текста, то есть символов 
(StreamWriter, StreamReader).
Описание слайда:
Уровни обмена с внешними устройствами Выполнять обмен с внешними устройствами можно на уровне: двоичного представления данных (BinaryReader, BinaryWriter); байтов (FileStream); текста, то есть символов (StreamWriter, StreamReader).

Слайд 116





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

Слайд 117





Пример чтения из текстового файла 
   static void Main()   // весь файл -> в одну строку
   {       try
            {
                StreamReader f = new StreamReader( "text.txt" );
                string s = f.ReadToEnd();
                Console.WriteLine(s);
                f.Close();
            }
            catch( FileNotFoundException e )
            {
                Console.WriteLine( e.Message );
                Console.WriteLine( " Проверьте правильность имени файла!" );
                return;
            }
            catch
            {
		     Console.WriteLine( " Неопознанное исключение!" );
                 return;
            }
   }
Описание слайда:
Пример чтения из текстового файла static void Main() // весь файл -> в одну строку { try { StreamReader f = new StreamReader( "text.txt" ); string s = f.ReadToEnd(); Console.WriteLine(s); f.Close(); } catch( FileNotFoundException e ) { Console.WriteLine( e.Message ); Console.WriteLine( " Проверьте правильность имени файла!" ); return; } catch { Console.WriteLine( " Неопознанное исключение!" ); return; } }

Слайд 118





Построчное чтение текстового файла 
		     StreamReader f = new StreamReader( "text.txt" );
                string s;
                long i = 0; 
                
                while ( ( s = f.ReadLine() ) != null )
                     Console.WriteLine( "{0}: {1}", ++i, s );
                f.Close();
Описание слайда:
Построчное чтение текстового файла StreamReader f = new StreamReader( "text.txt" ); string s; long i = 0; while ( ( s = f.ReadLine() ) != null ) Console.WriteLine( "{0}: {1}", ++i, s ); f.Close();

Слайд 119





Чтение чисел из текстового файла – вар. 1
try {
        List<int> list_int = new List<int>();
	    StreamReader file_in = new StreamReader( @"D:\FILES\1024" );
        Regex regex = new Regex( "[^0-9-+]+" );  
        List<string> list_string = new List<string>(
                       regex.Split( file_in.ReadToEnd().TrimStart(' ') ) );
        foreach (string temp in list_string)
                  list_int.Add( Convert.ToInt32(temp) );
        
        foreach (int temp in list_int) Console.WriteLine(temp);
        ...
}
catch (FileNotFoundException e)
        {  Console.WriteLine("Нет файла" + e.Message); return; }
catch (FormatException e)
        {  Console.WriteLine(e.Message); return;     }
catch { … }
Описание слайда:
Чтение чисел из текстового файла – вар. 1 try { List<int> list_int = new List<int>(); StreamReader file_in = new StreamReader( @"D:\FILES\1024" ); Regex regex = new Regex( "[^0-9-+]+" ); List<string> list_string = new List<string>( regex.Split( file_in.ReadToEnd().TrimStart(' ') ) ); foreach (string temp in list_string) list_int.Add( Convert.ToInt32(temp) ); foreach (int temp in list_int) Console.WriteLine(temp); ... } catch (FileNotFoundException e) { Console.WriteLine("Нет файла" + e.Message); return; } catch (FormatException e) { Console.WriteLine(e.Message); return; } catch { … }

Слайд 120





Чтение чисел из текстового файла – вар. 2
Описание слайда:
Чтение чисел из текстового файла – вар. 2

Слайд 121





Организация справки MSDN
Для каждого элемента:
Имя
Назначение
Пространство имен, сборка
Синтаксис (Syntax)
Описание (Remarks)
Примеры (Examples)
Иерархия наследования, платформы, версия, …
Ссылки на родственную информацию (See also)
Описание слайда:
Организация справки MSDN Для каждого элемента: Имя Назначение Пространство имен, сборка Синтаксис (Syntax) Описание (Remarks) Примеры (Examples) Иерархия наследования, платформы, версия, … Ссылки на родственную информацию (See also)



Похожие презентации
Mypresentation.ru
Загрузить презентацию