Прогр_С# _бак.ppt
- Количество слайдов: 70
ПРЦВШ (ф) ФБГОУ ВПО «РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИННОВАЦИОННЫХ ТЕХНОЛОГИЙ И ПРЕДПРИНИМАТЕЛЬСИВА» ПРЕДПРИНИМАТЕЛЬСИВА Горюнов Ю. Ю. , Горюнова Т. Ю. ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С# ПЕНЗА - 2012
СОДЕРЖАНИЕ 1. УПРОЩЁННАЯ СХЕМА КОМПЬЮТЕРА 2. ПОНЯТИЕ АЛГОРИТМА 3. ВИДЫ АЛГОРИТМОВ 4. ФОРМЫ ЗАПИСИ АЛГОРИТМОВ 5. ПЕРЕМЕННЫЕ 6. ОСНОВНЫЕ ОПЕРАТОРЫ C# 7. ТИПЫ ДАННЫХ 8. ФУНКЦИИ 9. ПРОЦЕДУРЫ 10. КОНСОЛЬНЫЙ ВЫВОД 11. КОНСОЛЬНЫЙ ВВОД 12. МАССИВЫ АРГУМЕНТЫ И ЗНАЧЕНИЯ ФУНКЦИЙ 13. ФАЙЛОВЫЙ ВВОД/ВЫВОД 14. ОБРАБОТКА ИСКДЮЧЕНИЙ 15. БИБЛИОТЕКИ КЛАССОВ 16. ПЛАТФОРМА. NET 17. ПРИЛОЖЕНИЕ 1. МАТЕМАТИЧЕСКИЕ ФУНКЦИИ 18. ПРИЛОЖЕНИЕ 2. ОБЪЕКТ Random 19. Лабораторная работа № 1. Основные конструкции языка C# 20. Лабораторная работа № 2. Массивы. Файловый ввод/вывод 21. Лабораторная работа № 3. Вертикальное меню. Библиотеки. 22. Лабораторная работа № 4. Строковый тип.
УПРОЩЁННАЯ СХЕМА КОМПЬЮТЕРА
ПОНЯТИЕ АЛГОРИТМА Алгоритм – есть неопределяемое понятие, под которым понимают список команд исполнителю (процессору). СВОЙСТВА АЛГОРИТМОВ §Понятность – у исполнителя должны быть устройства для выполнения каждой команды из списка. §Формальность – исполнитель выполняет команды буквально, в частности, ничего «не додумывая» . §Детерминированность – только выполнив одну команду, исполнитель приступает к выполнению следующей команды.
ВИДЫ АЛГОРИТМОВ § основной алгоритм; § вспомогательный алгоритм: • процедура; • функция. Исполнитель начинает выполнять команды основного алгоритма. Вспомогательные алгоритмы вызываются на выполнение из основного алгоритма. Основное отличие процедур от функций заключается в их вызове: вызов процедуры есть отдельная команда, а вызов функций возможен лишь из выражения.
ФОРМЫ ЗАПИСИ АЛГОРИТМОВ § Текстовая форма (псевдокод) – в этой форме команды записываются в виде предложений в повелительном наклонении. § Блок-схема геометрическими – в этой фигурами: форме команды овалами, изображаются прямоугольниками, параллелограммами, ромбами, стрелками и т. д. § Программа – в этой форме команды записываются в виде предложений на формальном языке (Бейсик, Паскаль, Си и т. д. ).
ПЕРЕМЕННЫЕ Оперативную память можно представить в виде длинной ленты, разделённой на однобайтные части, называемые ячейками. Одна или несколько соседних ячеек памяти называется областью памяти. Количество ячеек памяти называется размером области памяти. В каждую область памяти процессор может записать одно число, стирая находящееся там число. Каждой области памяти процессор может дать имя. Имя области памяти называется переменной.
ОСНОВНЫЕ ОПЕРАТОРЫ ЯЗЫКА С# § присвоить, § ветвление, § выбор, § цикл с параметром.
ПРИСВОИТЬ команда блок-схемы операция языка С++ переменная = выражение; Выполнение команды (операции) присвоить: § вычислить значение выражения; § результат записать в область памяти, первая ячейка которой обозначена «переменная» .
ВЕТВЛЕНИЕ Краткая форма if (условие) оператор; Полная форма if (условие) оператор_1; else оператор_2; Примечание. Операторы, заключенные в { }, считаются единственным оператором!
ВЫБОР switch (Выражение) { case значение_1: операторы_1; case значение_2: операторы_2; … case значение_k: операторы_k; default: операторы; } значение_1, … являются метками. Для выхода из оператора switch используется оператор break.
ЦИКЛ С ПАРАМЕТРОМ for( инициализация ; условие ; изменение ) оператор ;
ТИПЫ ДАННЫХ Типы данных предназначены для объявления переменных и функций. Тип данных содержит сведения о возможных значениях, размере области памяти , необходимом для их хранении, и действиях, которые допустимы над этими значениями. ОСНОВНЫЕ ТИПЫ ДАННЫХ § простые типы, ü основные операции C#, § тип объект, § тип массив, § строковый тип.
ПРОСТЫЕ ТИПЫ ДАННЫХ int целые числа из отрезка [-2 109; 2 109] 4 байта; float рациональные числа, модули которых принадлежат отрезку [1, 5 10 -45; 3, 4 1038], 7 цифр после запятой 4 байта; double рациональные числа, модули которых принадлежат отрезку [5, 0 10 -324; 1, 7 10308], 15 -16 цифр после запятой 8 байта; bool {true; false}; Unicode-символы 2 байта. Простые типы данных определены в пространстве имён System. char
ОСНОВНЫЕ ОПЕРАЦИИ C# в порядке убывания приоритета. () [] new (точка) - доступ к элементу вызов метода доступ к элементу выделение памяти ++ -* / % + - инкремент, декремент умножение, деление, остаток от деления сложение, вычитание < <= > >= == != && || = *= /= %= += -= меньше, не больше, не меньше, равно, не равно конъюнкция, дизъюнкция присвоить
ТИП ОБЪЕКТ Тип объект (или просто объект) соединяет в себе переменные (поля объекта) и функции (методы объекта). Переменная типа объект называется экземпляром объекта. Объявление объекта (упрощённый вариант): class имя_объекта { объявление полей и методов объекта: спецификатор объявление_поля … спецификатор объявление_метода … } Объявление экземпляра и выделение для него места в памяти: имя_объекта имя_экземпляра = new имя_объекта( ); После объявления экземпляра обращение к его полям и методам осуществляется посредством операции «точка» . Некоторые спецификаторы: public – поле или метод открыты (доступны отовсюду); private – поле или метод доступны внутри объекта, а извне – только через открытые методы объекта.
ПРИМЕРЫ ОБЪВЛЕНИЙ ОБЪЕКТОВ И ЭКЗЕМПЛЯРОВ // Объявление класса class First { private int A; // скрытое поле public max(int R, int T) // открытый метод {if(R>T) return R; else return T; } } /////////////////////////// static void Main( ) { int c = 1, d = 2; // Объявление экземпляра и выделение ему места в памяти First X = new First(); ///////////////////// c = X. max(c, d); // обращение к методу класса X. A = 7; // ошибка – поле A экземпляра X недоступно извне. }
ТИП МАССИВ Тип массив (или просто массив) представляет собой конечную последовательность однотипных переменных. ОБЪЯВЛЕНИЕ ОДНОМЕРНЫХ МАССИВОВ тип [ ] имя = new тип [макс_знач_индекса] Примечание. Наименьшее значение индекса равно 0. Пример. int [ ] Ar_1 = new int [5]; ОБЪЯВЛЕНИЕ ДВУМЕРНЫХ (ПРЯМОУГОЛЬНЫХ) МАССИВОВ тип [ , ] имя = new тип [макс_знач_индекса_1, макс_знач_индекса_2 ] Пример. float [ , ] Ar_2= new float [2, 7];
СТРОКОВЫЙ ТИП Значениями строкового типа являются последовательности символов в кодировке Unicode, заключённые в кавычки. Объявление переменных строкового типа (строковых переменных ): string имя_1 , имя_2, … ; Определённые для типа string операции: = присваивание; string. Compare(S 1, S 2) стр_пер. Substring(начиная_с, количество) выделение подстроки; стр_пер. Length длина строки; [] обращение по индексу (только чтение); + конкатенация (склейка) строк.
ПРИМЕР. УДАЛЕНИЕ ИЗ СТРОКИ ВСЕХ ПРОБЕЛОВ static void Main() { string S = "0 1 2 3 4 5", S 2=""; for (int k = 0; k < S. Length; k++) if (string. Compare(S. Substring(k, 1), " ") != 0) S 2 += S[k]; Console. Write. Line("{0}", S 2); }
ФУНКЦИИ Объявление функции тип_результата имя_функции ( объявление_аргументов ) { тело функции : объявление переменных, операции и операторы } Вызов функции имя_функции( список выражений ) Выполнение вызова функции • вычисляются значения всех выражений в списке; • в теле функции аргументы заменяются значениями выражений; • выполняются операции и операторы в теле функции; • если тип результата функции не void, то выполнение оператора return выражение; заменяет обращение к функции на значение выражения.
ПРИМЕР ОБЪВЛЕНИЯ И ВЫЗОВА ФУНКЦИИ С ПЕРЕДАЧЕЙ АРГУМЕНТОВ ПО ЗНАЧЕНИЮ int f ( { return ) ; } static void Main ( ) { int C = C=2 + } , D= ;
ПРОЦЕДУРЫ Объявление процедуры void Имя ( объявление входных и выходных аргументов ) { тело процедуры : объявление переменных, операции и операторы } Объявлению каждого выходного аргумента предшествует out Вызов процедуры имя_процедуры( список_выражений, out Арг 1, … ) Выполнение вызова процедуры • вычисляются значения всех выражений в списке; • в теле процедуры входные аргументы заменяются значениями выражений; • выполняются операции и операторы в теле процедуры, в результате выходным аргументам присваиваются значения.
ПРИМЕР ОБЪВЛЕНИЯ И ВЫЗОВА ПРОЦЕДУРЫ class Процедуры { public void P(int a, out int b, out int c) { b = a + 1; c = a + 2; } } class Program { static void Main() { Процедуры Пр = new Процедуры(); int A = 1, B, C; Пр. P(A+1, out B, out C); Console. Write("B={0, 5} C={1, 5}n", B, C); } }
КОНСОЛЬНЫЙ ВЫВОД Консоль – клавиатура или дисплей. Консольный форматный вывод Console. Write(ФОРМАТНАЯ_СТРОКА, СПИСОК_ ВЫРАЖЕНИЙ) Пример. double a = 1. 310; int k = 17; string Str = "qwerty"; форматная строка 3 выражения Console. Write( "a={0, 4 : 0. ###} k={1, 7: ###} {2, 8}n " , a+1, k, Str ); формат, общее количество позиций на экране, номер выражения (нумерация с 0) # – значащая цифра, 0 – любая цифра, n – перевод курсора на новую строку. На экране: a= 2, 31 k= 17 qwerty
КОНСОЛЬНЫЙ ВВОД Консольный ввод строк переменная_типа_string = Console. Read. Line( ); Консольный ввод чисел типа int переменная_типа_int = Convert. To. Int 32(Console. Read. Line( )); Консольный ввод чисел типа float или double переменная_типа_float = Convert. To. Double(Console. Read. Line( )); переменная_типа_double = Convert. To. Double(Console. Read. Line( )); Примеры. string Строка = Console. Read. Line( ); int Целая_Переменная = Convert. To. Int 32(Console. Read. Line());
МАССИВЫ КАК АРГУМЕНТЫ И ЗНАЧЕНИЯ ФУНКЦИЙ ОДНОМЕРНЫЕ МАССИВЫ public int[ ] Инициализация_Массива(int n) { int[] A = new int[n]; for (int i = 0; i < n; i++) A[i] = Convert. To. Int 32(Console. Read. Line()); return A; } public int Наибольший_в_Массиве(int [ ] a, int n) { int m = a[0]; for (int i = 1; i < n; i++) if (a[i] > m) m = a[i]; return m; }
ДВУМЕРНЫЕ МАССИВЫ КАК ЗНАЧЕНИЯ ФУНКЦИЙ class Массивы_2_операции { public double[ , ] Инициализация(int n, int m) { double [ , ] Ar 2 = new double[n, m]; for (int i=0; i<n; i++) for (int k=0; k < m; k++) { Console. Write("Ar 2[" + i + ", " + k + "]="); Ar 2[i, k] = Convert. To. Double(Console. Read. Line()); } return Ar 2; }
ДВУМЕРНЫЕ МАССИВЫ КАК АРГУМЕНТЫ ФУНКЦИЙ public void Вывод(int Макс_Инд 1, int Макс_Инд 2, double[, ] Массив) { for (int Инд 1 = 0; Инд 1 < Макс_Инд 1; Инд 1++) {for (int Инд 2 = 0; Инд 2 < Макс_Инд 2; Инд 2++) Console. Write("{0, 6: F 2} n", Массив[Инд 1, Инд 2]); } }
ВЫЗОВ МЕТОДОВ class Program { static void Main() {Массивы_2_операции Array = new Массивы_2_операции( ); double [ , ] A = Array. Инициализация(2, 3); Array. Вывод(2, 3, A); } }
ФАЙЛОВЫЙ ВВОД/ВЫВОД • Подключить файл System. IO: using System. IO; • Создать поток и связать его с физическим именем файла для записи (вывода) в файл или для чтения (ввода) из файла: Stream. Writer перемен = new Stream. Writer( полное имя файла ); Stream. Reader перемен = new Stream. Reader( полное имя файла ); • Записать/прочитать данные в/из файла: перемен. Write. Line(…); строковая_переменная = перемен. Read. Line(); • Закрыть файл: перемен. Close(); Примечание. Если полное имя файла вводится в тексте приложения, то следует использовать \ для отделения частей имени.
ПРИМЕР ФАЙЛОВОГО ВВОДА/ВЫВОДА using System; … using System. IO; class Файловый_Ввод_Вывод { public int[] Массив; public int Количество; public void Запись_в_файл( ) { string Ответ = "да"; string Имя; while (Ответ == "да") {try // Возможна ошибка открытия файла!!! {Console. Write("Полное имя файла для записи: "); Имя = Console. Read. Line(); Stream. Writer f = new Stream. Writer(Имя); // Пишем в файл числа, которые вводим интерактивно: for (int k = 0; k < Количество; k++) { f. Write. Line("{0, 5}", Console. Read. Line()); } f. Close(); Ответ = "нет"; }
catch (Exception Ex) // Обработка возможной ошибки открытия: { Console. Write. Line("Ошибка: " + Ex. Message); Console. Write. Line("Продолжим (да/нет)? "); Ответ = Console. Read. Line(); } } // while } // Запись_в_файл public void Чтение_файла() { try { string Имя, Стр_Число; Количество = -1; Console. Write("Полное имя файла для чтения: "); Имя = Console. Read. Line(); Stream. Reader f = new Stream. Reader(Имя); // Читаем файл пока он не пуст: while (( Стр_Число = f. Read. Line() ) != null) Массив[++Количество] = Convert. To. Int 32(Стр_Число); ++Количество; f. Close(); }
catch (Exception Ex) { Console. Write. Line("Ошибка: " + Ex. Message); } } // Чтение_файла } // Файловый_Ввод_Вывод class Program { static void Main() { Файловый_Ввод_Вывод IO = new Файловый_Ввод_Вывод(); // Используем поля экземпляра IO: IO. Количество = 3; IO. Массив = new int[IO. Количество]; IO. Запись_в_файл(); IO. Чтение_файла(); for(int i = 0; i < IO. Количество; i++) Console. Write. Line("{0, 5}", IO. Массив[i]); } }
ОБРАБОТКА ИСКЛЮЧЕНИЙ Исключение (точнее исключительная ситуация) – это ошибка, которая может возникнуть при выполнении программы. Оператор try «перехватывает ошибку» , а оператор catch её обрабатывает, не позволяя программе аварийно завершится. try {операторы, которые могут вызвать ошибку} catch(тип_исключения имя) {операторы} Если возникает ошибка, то управление передаётся оператору catch, если же ошибка не возникает, то выполнение программы продолжается с оператора, который сразу следует за catch. Возможные типы исключений: Exception Arithmetic. Exception Index. Out. Of. Range. Exception … Пример использования.
БИБЛИОТЕКИ КЛАССОВ Библиотека классов – это файл, содержащий объявления типов объект. Создание библиотек.
Внесём в библиотеку объявления типов объект из лабораторных работ № 1 и № 2 (объявления тел методов не указаны): using System; … using System. IO; // добавили директиву namespace Библиотека_табул_масс_файлы { public class Табулирование { public double f(double x) {…} public void Таблица(double Start, double End, double Step) {…} } public class Запись_Чтение { public void Запись_в_файл(int N, int[] Mas) {…} public void Чтение_файла(out int N, out int[] Mas) {…} } public class Массивы { public int[] Массив; public int Количество; public int[] Иниц_Случ() {…} public void Вывод_массива() {…} public void Сорт_пузырёк() {…} }}
Компилируем созданную библиотеку: Построить – Построить решение и закрываем её. Созданная библиотека будет хранится в папке binDebug проекта с расширением. dll. Все сведения о библиотеки можно получить с помощью программы ILDasm. exe:
Использование библиотеки § Создать приложение (консольное). § Подключить к нему библиотеку: Проект – Добавить ссылку § В окне обозревателя решения появится ссылка на библиотеку:
§ Директивой using подключаем библиотеку. Объявляем экземпляры необходимых типов:
ПЛАТФОРМА. NET – это: Ø система разработки приложений VISUAL STUDIO. NET на. NET совместимых языках: С# ( «Си шарп» ), С++, J#, VB. NET; Ø общеязыковая система выполнения CLR (Common Language Runtime); Ø средства поддержки взаимодействия с локальными и удалёнными базами данных (ADO. NET – Active Data Object); Ø средства поддержки веб-серверов, включая веб-страницы и веб-службы (ASP. NET – Active Server Pages for. NET). Компиляторы, входящие в состав. NET, переводят программу в промежуточный язык MSIL (Microsoft Intermediate Language), который не содержит команд, зависящих от языка, операционной системы и типа компьютера. Программа на языке MSIL выполняется под управлением системы CLR. При выполнении программы CLR вызывает JIT-компилятор (just in JIT time), который переводит код с языка MSIL в машинные команды time конкретного процессора, которые немедленно выполняются. Компилируются только те части программы, которые требуются выполнить в данный момент. Каждая часть программы компилируется один раз и сохраняется в памяти.
СИСТЕМА VISUAL STUDIO. NET Создание консольных приложений 1. Открыть MS Visual Studio:
2. Выбрать язык, тип приложения, его имя и папку, в которой будет сохранено приложение:
Запуск приложения Ctrl+F 5
ПРИЛОЖЕНИЕ 1. МАТЕМАТИЧЕСКИЕ ФУНКЦИИ Математические функции в C# объявлены как статические методы объекта Math: Math. Abs(double x) Math. Sin( double x) Math. Acos(double x) Math. Sqrt(double x) Math. Asin(double x) Math. Tan(double x) Math. Atan(double x) Math. Round(double x) Math. Cos(double x) Math. Log 10(double x) Math. Exp(double x) Math. Ceiling(double x) - «потолок» аргумента ( обозначается x ), Math. Div. Rem( int a, int b, out int q) – остаток от деления, Math. E – основание натурального логарифма, Math. Floor(double x) – «пол» аргумента ( обозначается x ), Math. Log(double x) – натуральный логарифм, Math. PI – число пи. Пол (потолок) вещественного числа A – есть наибольшее (наименьшее) целое, которое меньше (больше ) или равно A.
ПРИЛОЖЕНИЕ 2. ОБЪЕКТ Random Методы объекта Random возвращают псевдослучайные числа. Объявление экземпляра объекта Random: Random a = new Random(); - последовательности чисел будут различными, Random a = new Random(1); - последовательности будут одинаковыми. Обращение к методам объекта Random: a. Next() – случайное целое число из всего отрезка типа int 32, a. Next(N) - случайное целое число из отрезка [0; N], a. Next(N, M) - случайное целое число из отрезка [N; M], a. Next. Double() - случайное целое число из интервала [0; 1).
ЛАБОРАТОРНАЯ РАБОТА № 1. ОСНОВНЫЕ КОНСТРУКЦИИ ЯЗЫКА C# Теоретический материал: понятие алгоритма, основные операторы языка C#, простые типы данных, функции, процедуры, тип объект, консольный ввод/вывод, математические функции, система Visual Studio. NET. Техническое задание. Табулировать функцию на отрезке, начало и конец отрезка, шаг табуляции вводятся интерактивно. Разработать алгоритм и программу на языке C# в системе Visual Studio. NET. Результат работы программы проверить в системе Math. CAD. Функция Словесное описание алгоритма: в цикле для каждого аргумента вывести на экран аргумент и значение функции. Вычисление значение функции оформим в виде функции с именем f, а само табулирование – виде процедуры «Таблица» .
Алгоритм решения задачи о табулировании функции
Программа на языке C# using System; namespace Лб_1_Табулирование_функции {class Табулирование { public double f(double x) { if (x < 0) return Math. Sin(x); else if (Math. Sin(x) != 0) return 1 / Math. Sin(x); else return 3; } public void Таблица(double Start, double End, double Step) { for(double x=Start; x<End+Step; x+=Step) Console. Write. Line(" f({0, 7: #0. 00})= {1, 7: #0. 0000}", x, f(x)); }} class Program { static void Main() { Табулирование Tab = new Табулирование(); double Начало = -5, Конец = 5, Шаг = 0. 4; // Заменить на консольный ввод! Tab. Таблица(Начало, Конец, Шаг); }} }
Копия экрана с результатом работы программы
Проверка программных результатов в системе Math. CAD
ВАРИАНТЫ ЗАДАНИЙ К ЛАБОРАТОРНОЙ РАБОТЕ № 1. Вариант 5. Вариант 2. Вариант 6. Вариант 3. Вариант 7. Вариант 4. Вариант 8.
ВАРИАНТЫ ЗАДАНИЙ К ЛАБОРАТОРНОЙ РАБОТЕ № 1. Вариант 9. Вариант 13. Вариант 10. Вариант 14. Вариант 11. Вариант 15. Вариант 12. Вариант 16.
Вариант СУПЕР. Индийский математик Рамануджан Сриниваза Айенгар (22. 1887 – 26. 4. 1920) привёл единственную в своём роде формулу: Причём ни бесконечный ряд, ни непрерывная дробь не выражаются отдельно через и е. Натуральное число k вводится с клавиатуры, вывести на экран . где Tk означает сумму первых k слагаемых ряда, а Sk есть k-я подходящая дробь.
ЛАБОРАТОРНАЯ РАБОТА № 2. МАССИВЫ. ФАЙЛОВЫЙ ВВОД/ВЫВОД Теоретический материал: тип массив, массивы как аргументы и значения функций, файловый ввод/вывод, обработка исключений, объект Random. Техническое задание. Целочисленный одномерный массив инициализировать случайным образом числами из отрезка [-30; 30]. Сохранить полученный массив в файле; количество элементов массива и полное имя вводятся интерактивно. Считать массив из файла и отсортировать его по не убыванию. Разработать алгоритм. Словесное описание алгоритма: 1) инициализировать массив (функция Иниц_Случ), 2) вывести массив на экран (функция Вывод_массива), 3) сохранить массив в файле (функция Запись_в_файл), 4) прочитать массив из файла (функция Чтение_файла), 5) отсортировать массив (функция Сорт_пузырёк), 6) вывести массив на экран.
using System; … using System. IO; namespace Лб_2_Массивы_файлы { class Запись_Чтение { public void Запись_в_файл(int N, int [] Mas ) { string Ответ = "да"; string Имя; while (Ответ == "да") {try // Возможна ошибка открытия файла!!! {Console. Write("Полное имя файла для записи: "); Имя = Console. Read. Line(); Stream. Writer f = new Stream. Writer(Имя); // Пишем в файл элементы массива: for (int k = 0; k < N; k++) { f. Write. Line("{0, 5}", Mas[k]); } f. Close(); Ответ = "нет"; }
catch (Exception Ex) // Обработка возможной ошибки открытия: { Console. Write. Line("Ошибка: " + Ex. Message); Console. Write. Line("Продолжим (да/нет)? "); Ответ = Console. Read. Line(); } }// while }// Запись_в_файл public void Чтение_файла(out int N, out int [ ] Mas) { Mas = new int [100]; // Требует присвоить элементам значения (0) N = -1; try { string Имя, Стр_Число; Console. Write(“Имя файла для чтения: "); Имя = Console. Read. Line(); Stream. Reader f = new Stream. Reader(Имя); // Читаем файл пока он не пуст: while (( Стр_Число = f. Read. Line() ) != null) Mas[++N] = Convert. To. Int 32(Стр_Число); ++N; f. Close(); }
catch (Exception Ex) { Console. Write. Line("Ошибка: " + Ex. Message); } } // Чтение_файла } class Массивы { public int[] Массив; public int Количество; public int[] Иниц_Случ() { Random Rnd = new Random(); Массив = new int[Количество]; for (int k = 0; k < Количество; k++) Массив[k] = Rnd. Next(-30, 30); return Массив; } public void Вывод_массива() // поле объекта { for (int k = 0; k < Количество; k++) Console. Write("n {0, 3}", Массив[k]); Console. Write(“n”); } public void Сорт_пузырёк() // поле объекта {char Again = 'y'; while (Again == 'y') { Again = 'n'; for (int k = 0; k < Количество - 1; k++) if (Массив[k] > Массив[k + 1]) { int L = Массив[k]; Массив[k] = Массив[k + 1]; Массив[k + 1] = L; Again = 'y'; break; } }
class Program { static void Main() {Массивы Ar = new Массивы(); Запись_Чтение File. IO = new Запись_Чтение(); Console. Write("n Количество элементов в массиве: "); Ar. Количество = Convert. To. Int 32(Console. Read. Line()); Ar. Иниц_Случ(); Console. Clear(); Ar. Вывод_массива(); File. IO. Запись_в_файл(Ar. Количество, Ar. Массив ); File. IO. Чтение_файла(out Ar. Количество, out Ar. Массив); Ar. Сорт_пузырёк(); Console. Write("n"); Ar. Вывод_массива(); }}}
Результат работы программы
ВАРИАНТЫ ЗАДАНИЙ К ЛАБОРАТОРНОЙ РАБОТЕ № 2. Во всех вариантах требуется инициализировать целочисленный одномерный (двумерный) массив числами из отрезка [K; M] (значения K < M вводятся интерактивно), сохранить полученный массив в файле (полное имя файла вводится интерактивно), после чего считать его из файла и выполнить над его элементами приведённое ниже задание. Вариант 1. отрицательных элементов. Вариант 2. элементов с чётными номерами. Вариант 3. наименьший по модулю элементы. Вариант вычислить одномерном сумму В массиве 4. элементов, заключёнными первым и последним нулевыми элементами. Вариант 5. элементов, заключённых между минимальным и максимальным элементами.
ементы Переставить 6. ного Вариант чтобы сначала располагались все не отрицательные элементы, а потом – все отрицательные. Вариант 7. Удалить одномерного из массива отрицательные все элементы, освободившиеся в конце массива элементы заполнить нулями. Вариант 8. одномерного так, Переставить элементы массива чтобы сначала располагались все элементы, которые по модулю меньше Y, а потом – все остальные. ементы Переставить 9. ного Вариант чтобы сначала располагались все элементы, отличающиеся от максимального не более чем на 10%, а потом – все остальные. Вариант 10. В двумерном массиве вычислить количество строк, не содержащих ни одного отрицательного элемента. Вариант 11. В двумерном массиве найти наибольшее из чисел, которое встречается в массиве более одного раза. Вариант 12. В двумерном массиве вычислить суммы элементов на главной и побочной диагоналях.
Вариант 13. В двумерном массиве определить номер строки, в которой находится самая длинная последовательность подряд идущих положительных элементов. Вариант 14. В двумерном массиве определить все седловые точки. (Элемент Ajk двумерного массива называется седловой точкой, если Ajk является минимальным в j-строке и максимальным в k-м столбце. ) Вариант 15. Переставляя элементы двумерного массива, расположить их в порядке не убывания их характеристик. (Характеристикой столбца называется сумма модулей его элементов. ) Вариант 16. С помощью умножения строк на числа и сложения их с другими строками привести двумерный массив к треугольному виду.
ЛАБОРАТОРНАЯ РАБОТА № 3. ВЕРТИКАЛЬНОЕ МЕНЮ. СТРОКИ. БИБЛИОТЕКИ Теоретический материал. Создание и использование библиотек. Вертикальное меню можно создать следующим образом: while (true) {// Вывод пунктов меню на экран Console. Clear(); Console. Write. Line(" 1. …"); Console. Write. Line(" 2. …"); Console. Write. Line(" 3. Выход. "); Console. Write("nn Ваш выбор: "); Ответ = Console. Read. Line(); // ждём выбора пункта меню; Номер = int. Parse(Ответ); // преобразование строки в целое;
// вызываем методы в зависимости от выбранного пункта меню: switch (Номер) { case 1: объявление экземпляра, вызов методов; Console. Write(" nnn Для продолжения нажмите Enter"); Console. Read. Line(); break; case 2: … case 3: return; } } Техническое задание. 1. Объявления типов объект из заданий к лабораторным работам № 1 и № 2 поместить в библиотеку. 2. Создать консольное приложение с горизонтальным меню и подключённой библиотекой. 3. Пункты меню должны соответствовать всем заданиям к лабораторным работам № 1 и № 2
Выполнение технического задания После создания библиотеки, создаём требуемое консольное приложение, вставив в него ссылку на библиотеку: using System; using Библиотека_табул_масс_файлы; // подключили библиотеку; namespace Лаб 3_библиотеки_меню { class Меню { public void Выбор() { int Номер; string Ответ; // Создание меню while (true) {// Вывод пунктов меню на экран Console. Clear(); Console. Write. Line(" 1. Табулирование функции. "); Console. Write. Line(" 2. Инициализация массива. "); Console. Write. Line(" 3. Выход. "); Console. Write("nn Ваш выбор: "); Ответ = Console. Read. Line(); // ждём выбора пункта меню; Номер = int. Parse(Ответ); // преобразование строки в целое;
// вызываем методы в зависимости от выбранного пункта меню: switch (Номер) { case 1: Табулирование ТБ = new Табулирование(); ТБ. Таблица(5, 7, 0. 5); Console. Write(" nnn Для продолжения нажмите Enter"); Console. Read. Line(); break; case 2: Массивы М = new Массивы(); М. Количество = 4; М. Иниц_Случ(); М. Вывод_массива(); Console. Write(" nnn Для продолжения нажмите Enter"); Console. Read. Line(); break; case 3: return; } } class Program { static void Main() { Меню W = new Меню(); W. Выбор(); } } }
ЛАБОРАТОРНАЯ РАБОТА № 4. СТРОКОВЫЙ ТИП Теоретический материал. Строковый тип. Техническое задание. Сохранить интерактивно введённую строку в файле, после чего считать её из файла и выполнить задание, указанное в варианте. осчитать Вариант 1. последовательность символов, не содержащая пробелов. ) Вариант 2. Вывести на экран все слова в строке, которые начинаются с буквы «Ф» . Вариант 3. Удалить из строки все точки и запятые. Вариант 4. Вывести на экран все символы строки, которые заключены в круглые скобки. Вариант 5. Вывести на экран самое короткое слово в строке. Вариант 6. Заменить в строке цифры 0, 1, 2 словами «ноль» , «один» , «два» .
Вариант 7. Проверить, является ли строка палиндромом. (Палиндром – последовательность символов, которая одинаково читается слева направо и справа налево, например, «шалаш» , «дед» , «а роза упала на лапу азора» . ) Вариант 8. Вывести на экран сначала все вопросительные предложения, а затем все остальные.
Список литературы 1. http: //www. ecma-international. org/pablications/standards/Ecma 334. htm - возможности языка C#. 2. Павловская Т. А. C#. Программирование на языке высокого уровня. – СПб. : Питер, 2012.
Прогр_С# _бак.ppt