2018 ПРОГРАММНАЯ ИНЖЕНЕРИЯ ПИб-3курс ЛЕК=12шт(до 12.05) Л/Р=8шт(до 09.06) СРС=97ч https://goo.gl/CmLtLr рейтинг группы/оценки https://goo.gl/UtYQVT ПРИМЕРЫ ПРОГРАММ С ЛЕКЦИЙ https://goo.gl/hHvGtQ гугл-папка с примерами реализаций https://goo.gl/f2RuDo файл HELPME, это подсказки во время ЛабРаб https://goo.gl/F1B74u ИТ-Хакатон, критерии оценивания - https://yadi.sk/d/EyVoof9L3HXuXm презентации лекций: https://goo.gl/4vd6Dv лекция про ИИ https://goo.gl/iHMdpL лекция про Кодирование https://goo.gl/nhYy31 лекция про Мессенджер |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| * список основных учебных видео по данной дисцилине: https://youtu.be/wQKHyaN_76g - проект_1 - Я черепаший БОГ - как подключить DLL https://youtu.be/Og3AFF9FKWk - проект_2 - Динамические библиотеки. Коллекции. https://youtu.be/1TwWfJeNjHE - проект_3 - Динамические компоненты в C# https://youtu.be/Bbens2jvZak - проект_4 - Грабим сайт Универа. Часть 1. https://youtu.be/YlBtHfZO5yw - проект_4 - Грабим сайт Универа. Часть 2. https://youtu.be/lVKKYWzr8uc - проект_4 - Школа начинающего спамера. Пакетная рассылка почты. https://youtu.be/dgq1K9baNxY - проект_5 - Тест: Прототип - DLL - MySQL. Часть 1 Прототип https://youtu.be/Xa4BSG1TpVI - проект_5 - Тест: Прототип - DLL - MySQL. Часть 2 DLL https://youtu.be/e2ccEHmSa_w - проект_5 - Тест: Прототип - DLL - MySQL. Часть 3 Создаём БД https://youtu.be/uDWFWZi9rLQ - проект_5 - Тест: Прототип - DLL - MySQL. Часть 4 Подключаем БД https://youtu.be/_1mGN7vWw7I - проект_5 - Тест: Прототип - DLL - MySQL. Часть 5 Переносим дамп БД на Хостинг https://youtu.be/OcouGiTxEe8 - проект_5 - Тест: Часть 6 MySQL+WorkBench - Делаем несколько таблиц и связываем их, нормализация, внешний ключ. https://youtu.be/*********** - проект_5 - Тест: Часть 7 C# - Делаем запросы INSERT, SELECT, UPDATE, DELETE * список вспомогательных учебных видео по данной дисцилине - это для саморазвития: https://youtu.be/vz3sj8O820E - Перечисления в C# - enum https://youtu.be/6pGj00h6OdM - Как скрафтить ИНТЕРФЕЙС в C# https://youtu.be/VDSOvAuhwlo - Освободите Вилли - оператор using в C# https://youtu.be/Lh6b6NsWFys - static в C# https://youtu.be/29q1Lz8ErMc - Два способа передать значения между формами в C# https://youtu.be/2EZ_E8sWQIo - Как узнать нажатую radioButton: C# vs Delphi https://youtu.be/z-Lp2Be24JA - Перегрузка операций в C# https://youtu.be/a4yQYJjf7Pc - Обобщённые методы в C# https://youtu.be/mF9cdmv5Q68 - Передача параметров по ссылке в C# |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| Тема ООП - самая важная, нужно знать: - класс, объект, наследование, инкапсуляция, акцессоры - поля, свойства, методы, private, protected, public - static, using, интерфейсы, делегаты, полиморфизм От оценки по этой теме зависит итоговая оценка за ЭКЗАМЕН... Всё есть в учебнике по ООП, качать отсюда (oop.pdf): https://pcoding.ru/base.php |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| Темы лабораторных работ 1 Как использовать чужую DLL 2 Как создать свою DLL + коллекции (список, стек, очередь) 3 Пишем DLL для Экспертной системы / Тестирующей программы 4 Динамические компоненты 5 Пишем DLL для Парсер сайтов + регулярные выражения 6 Пишем DLL для Граббер сайтов + Пакетная рассылка почты 7 Клиент-серверное приложение - Мессенджер (MySQL+C#) 8 Клиент-серверное приложение - Мессенджер (MySQL+C#) Тема 1. Как использовать чужую DLL - видео: Я черепаший БОГ - https://youtu.be/wQKHyaN_76g Тут скачать черепашную SmallBasicLibrary.dll библиотеку: https://pcoding.ru/base.php Тут help про черепашную библиотеку: http://smallbasic.com/doc.aspx?l=ru&o=GraphicsWindow ЛР 1 Как подключать dll-библиотеку? Как запускать программу из консоли? Как в программе принять параметры из консоли? Задание: Скачать dll-библиотеку. Подсоединить к своему проекту. Сделать так, чтобы черепашка рисовала 6-значный индекс. Сделать так, чтобы черепашка рисовала 6-значный индекс, введенный с консоли. Дополнительные задания: - обеспечить возможность задавать с консоли скорость черепашки, цвет фона, цвет линий, паузу между цифрами и т.п. - обеспечить возможность задавать с консоли несколько параметров одновременно... - установить индивидуальные цвета для разных цифр - задавать размеры цифр Black – черный Purple – фиолетовый White – белый Maroon – темно-красный Red – красный Navy – темно-синий Green – зеленый Brown – коричневый Blue – синий SkyBlue – голубой Yellow – желтый Cream – кремовый Aqua – бирюзовый Olive – оливковый Fuchsia – сиреневый Teal – сине-зеленый Gray – темно-серый Lime – ярко-зеленый MoneyGreen – цвет зеленых денег LtGray – светло-серый DkGray – темно-серый MedGray – серый Silver – серебряный пример: using System.Threading; using Microsoft.SmallBasic.Library; using t = Microsoft.SmallBasic.Library.Turtle; GraphicsWindow.BackgroundColor = "Yellow"; GraphicsWindow.PenColor = GraphicsWindow.GetColorFromRGB(0,0,255); //t.X = 222; //t.Y = 222; //t.Angle = 90; //t.Move(100); Turtle.X = GraphicsWindow.Width / 2; Turtle.Y = GraphicsWindow.Height / 2; Turtle.Speed = 8; Turtle.PenDown(); int n = 9, ang = 0; for (int j = 0; j < n; j++) { for (int i = 0; i < n; i++) { Turtle.Move(45); ang += (360 / n); Turtle.Angle = ang; Thread.Sleep(50); } ang += (360 / n); Turtle.Angle = ang; Thread.Sleep(100); } Тема 2. Как создать свою DLL - видео: Динамические библиотеки. Коллекции. - https://www.youtube.com/watch?v=Og3AFF9FKWk На лекции: Обсудим темы Хакатона и тему ДП Класс, объект, поля и свойства / акцессоры, методы и конструкторы Обсудим передачу аргументов с консоли Коллекции: список, очередь, стек Посмотрите самостоятельно видео про очередь и стек Структура с полями и методами foreach var Split Техническое задание по теме 2: Создание DLL по работе с файлами и структурами... Пример: using MessagingToolkit.QRCode.Codec; using MessagingToolkit.QRCode.Codec.Data; string txt = textBox1.Text; QRCodeEncoder coder = new QRCodeEncoder(); Bitmap qrcode = coder.Encode(txt, Encoding.UTF8); pictureBox1.Image = qrcode as Image; string path = Directory.GetCurrentDirectory(); saveFileDialog1.InitialDirectory = path; openFileDialog1.InitialDirectory = path; if (pictureBox1.Image != null) if (saveFileDialog1.ShowDialog() == DialogResult.OK) pictureBox1.Image.Save(saveFileDialog1.FileName); if (openFileDialog1.ShowDialog() == DialogResult.OK) pictureBox1.ImageLocation = openFileDialog1.FileName; try { Bitmap decImg = new Bitmap(pictureBox1.Image); QRCodeBitmapImage qrImg = new QRCodeBitmapImage(decImg); QRCodeDecoder decoder = new QRCodeDecoder(); //decoder.decode(qrImg); textBox2.Text = decoder.decode(qrImg, Encoding.UTF8); } catch (Exception err) { MessageBox.Show( "нет распознаваемого образа, ошибка - \n\r" + err); } using System; class solver { static void Main() { int max = int.Parse(Console.ReadLine()); string[] words = Console.ReadLine().Split(); int count = words.Length; int[] arr = new int[count]; for (int i = 0; i < count; i++) arr[i] = words[i].Length; bool result = false; int countNabor = 1 << count; for (int nabor=0; nabor 0) summa += arr[pos]; } if (summa == max) result = true; } Console.WriteLine(result? "yes": "no"); Console.ReadKey(); // это нужно убрать при подаче в контестер } } using System; using System.IO; class solver { struct Point { public int row; public int col; } static void Main() { string[] lines = File.ReadAllLines("input.txt"); Point posK, posh; posK.row = 0; posK.col = 0; posh.row = 0; posh.col = 0; for (int row=0; row<8; row++) { for (int col=0; col<8; col++) { if (lines[row][col] == 'K') { posK.row = row; posK.col = col; } if (lines[row][col] == 'h') { posh.row = row; posh.col = col; } } } bool result = false; if ( (Math.Abs(posK.row-posh.row) == 2) && (Math.Abs(posK.col - posh.col) == 1) || (Math.Abs(posK.row - posh.row) == 1) && (Math.Abs(posK.col - posh.col) == 2) ) { result = true; } Console.WriteLine(result); Console.ReadKey(); // это нужно убрать при подаче в контестер } } Входной файл: -------- -------- -------- -------- -------- -----K-- ------h- -------b Решение: using System; class solver { static void Main() { int rowB = 0, colB = 0, rowK = 0, colK = 0, rowH = 0, colH = 0; string[] lines = System.IO.File.ReadAllLines("input.txt"); for (int row = 0; row<8; row++) { for (int col = 0; col<8; col++) { if (lines[row][col] == 'K') { rowK = row; colK = col; } // белый король if (lines[row][col] == 'b') { rowB = row; colB = col; } // черный слон if (lines[row][col] == 'h') { rowH = row; colH = col; } // чёрный конь } } bool diag_1 = (rowK - colK) == (rowB - colB); bool diag_2 = (rowK + colK) == (rowB + colB); bool result = (diag_1 || diag_2); if (((rowK + colK) == (rowB + colB)) && ((rowH + colH) == (rowB + colB)) && ((rowH - rowK) * (rowH - rowB) < 0)) { result = false; } // второстепенная диагональ if (((rowK - colK) == (rowB - colB)) && ((rowH - colH) == (rowB - colB)) && ((colH - colK) * (colH - colB) < 0)) { result = false; } // главная диагональ Console.WriteLine(result? "yes": "no"); Console.ReadKey(); } }