Срез. Среззззз. Билет 1 Наименование вопроса Дайте определение понятия Программное обеспечение
Скачать 0.49 Mb.
|
Оператор BETWEENОператор BETWEEN определяет диапазон значений с помощью начального и конечного значения, которому должно соответствовать выражение: WHERE выражение [NOT] BETWEEN начальное_значение AND конечное_значение Например, получим все товары, у которых цена от 20 000 до 50 000 (начальное и конечное значения также включаются в диапазон): SELECT * FROM Products WHERE Price BETWEEN 20000 AND 50000; Операторы LIKE и REGEXPОператор LIKE принимает шаблон строки, которому должно соответствовать выражение. WHERE выражение [NOT] LIKE шаблон_строки Для определения шаблона могут применяться ряд специальных символов подстановки: %: соответствует любой подстроке, которая может иметь любое количество символов, при этом подстрока может и не содержать ни одного символа Например, выражение WHERE ProductName LIKE 'Galaxy%' соответствует таким значениям как "Galaxy Ace 2" или "Galaxy S7" _: соответствует любому одиночному символу Применим оператор LIKE: SELECT * FROM Products WHERE ProductName LIKE 'iPhone%'; REGEXP позволяет задать регулярное выражение, которому должно соответствовать значение столбца. В этом плане REGEXP представляет более изощренный и комплексный способ фильтрации, нежели оператор LIKE. SELECT * FROM Products WHERE ProductName REGEXP 'Phone|Galaxy'; IS NULLОператор IS NULL позволяет выбрать все строки, столбцы которых имеют значение NULL: SELECT * FROM Products WHERE ProductCount IS NULL; 3. Руководствуясь правилами работы с массивами, определите наименьший элемент в одномерном массиве целых чисел и его порядковый номер. Количество и элементы массива ввести с клавиатуры. Организуйте удобный пользовательский интерфейс. Спроектируйте консольное приложение на языке программирования С#. static void Main(string[] args) { Console.Write("Введите количество элементов массива: "); int n = int.Parse(Console.ReadLine()); int[] a = new int[n]; for (int i = 0; i < a.Length; i++) { Console.Write("a[{0}]= ", i); a[i] = int.Parse(Console.ReadLine()); } int min = a[0]; int index = 0; for (int i = 0; i < a.Length; i++) //перебираем все элементы массива { if (a[i] < min) { min = a[i]; index = i; } } Console.WriteLine("Наименьший элемент {0} имеет индекс {1}", min, index); } 4. Руководствуясь правилами объявления переменных, объявите переменную типа int. Организуйте удобный пользовательский интерфейс. Спроектируйте программу на языке программирования Python решающую следующую задачу: дана строка символов произвольной длины. Группы символов разделены между собой пробелами или знаками пунктуации считаются словами (знак пунктуации не считается частью слова). Вывести все слова, которые начинаются с буквы, которую ввели с клавиатуры, а также определите количество таких слов. count = 0 a = str(input("Введите строку символов произвольной длины: ")) a = a.replace(',', ' ') k = a.split(' ') x = input("Введите букву для опрделения: ") for i in k: if i[0] == x: print(i) count += 1 print(count) БИЛЕТ № 13 Наименование вопроса: 1. Опишите методологию моделирования потоков данных DFD. Объясните цель и назначение методологии DFD. Выделите и охарактеризуйте ее основные понятия. Диаграммы потоков данных (Data Flow Diagram – DFD) являются основным средством моделирования функциональных требований к проектируемой системе. С их помощью эти требования разбиваются на функциональные компоненты (процессы) и представляются в виде сети, связанной потоками данных. В соответствии с DFD модель системы определяется как иерархия диаграмм потоков данных, описывающих процесс преобразования информации от ее ввода в систему до выдачи пользователю. В отличие от стрелок IDEF0, которые представляют собой жесткие взаимосвязи, стрелки DFD показывают, как объекты (включая данные) двигаются от одной работы к другой. Это представление потоков совместно с хранилищами данных и внешними сущностями делает модели DFD более похожими на физические характеристики системы – движение объектов, хранение объектов, поставка и распространение объектов. Цель диаграмм потоков данных - показать, как каждый процесс преобразует свои входные данные в выходные, и выявить отношения между этими процессами. Назначение: DFD-диаграммы успешно используются как дополнение к IDEF0 для описания документооборота и обработки информации. При создании диаграммы потоков данных используются четыре основных понятия: потоки данных; процессы (работы) преобразования входных потоков данных в выходные; внешние сущности; накопители данных (хранилища). Потоки данных являются абстракциями, использующимися для моделирования передачи информации (или физических компонент) из одной части системы в другую. Потоки на диаграммах изображаются именованными стрелками, ориентация которых указывает направление движения информации. В DFD каждая сторона работы не имеет четкого назначения, как в IDEF0, стрелки могут подходить и выходить из любой грани прямоугольника работы. В DFD работы (процессы) представляют собой функции системы, преобразующие входы в выходы. Так же, как процессы IDEF3, они имеют входы и выходы, но не поддерживают управления и механизмы, как IDEF0. Имя процесса может содержать глагол в неопределенной форме с последующим дополнением (например, "получить документы по отгрузке продукции") Хранилище (накопитель) данных позволяет на указанных участках определять данные, которые будут сохраняться в памяти между процессами. Фактически хранилище представляет "срезы" потоков данных во времени. Информация, которую оно содержит, может использоваться в любое время после ее получения, при этом данные могут выбираться в любом порядке. Имя хранилища должно определять его содержимое и быть существительным. Внешняя сущность представляет собой материальный объект вне контекста системы, являющейся источником или приемником системных данных. Ее имя должно содержать существительное, например, "склад товаров". Предполагается, что объекты, представленные как внешние сущности, не должны участвовать ни в какой обработке. При построении иерархии DFD переходить к детализации процессов следует только после определения содержания всех потоков и накопителей данных. 2. Перечислите агрегатные функции в MySQL. Укажите, для чего они используются? Опишите синтаксис SELECT-запроса c использованием одной из этих функций. Агрегатные функции вычисляют некоторые скалярные значения в наборе строк. В качестве набора сток может выступать вся таблица, выборка из таблицы либо сгруппированные данные. В MySQL есть следующие агрегатные функции: AVG: вычисляет среднее значение в столбце или группе. SUM: вычисляет сумму значений в столбце или группе. MIN: вычисляет наименьшее значение в столбце или группе. MAX: вычисляет наибольшее значение в столбце или группе. COUNT: вычисляет количество строк в запросе. Все агрегатные функции за исключением COUNT(*) игнорируют значения NULL. SELECT AVG(Price) AS Average_Price FROM Products; 3. Дана квадратная матрица, элементами которой являются целые числа. Руководствуясь правилами работы с массивами, определите сумму элементов главной диагонали. Размер и элементы массива ввести с клавиатуры. Организуйте удобный пользовательский интерфейс. Спроектируйте консольное приложение на языке программирования С#. static void Main(string[] args) { int[,] a; Console.Write("Размер массива n= "); int n = int.Parse(Console.ReadLine()); a = new int[n, n]; for (int i = 0; i < a.GetLength(0); i++) { for (int j = 0; j < a.GetLength(1); j++) { Console.Write("a[{0},{1}]= ", i, j); a[i, j] = int.Parse(Console.ReadLine()); } } Console.WriteLine("Исходный массив:"); for (int i = 0; i < a.GetLength(0); i++) { for (int j = 0; j < a.GetLength(1); j++) { Console.Write("{0} ", a[i, j]); } Console.WriteLine(); } int k = 0; for (int i = 0; i < a.GetLength(0); i++) { k += a[i, i]; } Console.WriteLine("Сумма элементов на главной диагонали {0}", k); } 4. Руководствуясь правилами объявления переменных, объявите переменную типа str. Удалите из строки повторяющиеся символы и все пробелы. Организуйте удобный пользовательский интерфейс. Спроектируйте программу на языке программирования Python. a=input("Введите строку символов и пробелов: ").replace(' ', '') b = "" for i in a: if i not in b: b+=i print("результат:", b) БИЛЕТ № 14 Наименование вопроса: 1. Опишите методологию моделирования структуры баз данных ERD. Объясните цель и назначение методологии ERD. Выделите и охарактеризуйте ее основные понятия. Модель Сущность-Связь (ER-модель) — это методология, позволяющая описывать концептуальные схемы. Она предоставляет графическую нотацию, основанную на блоках и соединяющих их линиях, с помощью которых можно описывать объекты и отношения между ними какой-либо другой модели данных. Цель моделирования данных состоит в обеспечении разработчика ИС схемой базы данных в форме одной модели или нескольких локальных моделей, которые могут быть отображены в любую СУБД. Наиболее распространенным средством моделирования данных являются диаграммы "сущность-связь" (Entity-Relationship Diagram). Назначение: с помощью ERD осуществляется детализация накопителей данных DFD – диаграммы, а также документируются информационные аспекты системы, включая идентификацию объектов, важных для предметной области (сущностей), свойств этих объектов (атрибутов) и их связей с другими объектами (отношений). Основные элементы ERD: 1. Сущность – множество экземпляров реальных или абстрактных объектов (людей, событий, состояний, идей, предметов и др.), обладающих общими атрибутами или характеристиками. Сущность – любой различимый объект (объект, который мы можем отличить от другого), информацию о котором необходимо хранить в базе данных. Любой объект системы может быть представлен только одной сущностью, которая должна быть уникально идентифицирована. Выделяют тип сущности и экземпляр сущности. Тип сущности относится к набору однородных личностей, предметов, событий или идей, выступающих как целое. Экземпляр сущности относится к конкретной вещи в наборе. Например, типом сущности может быть ГОРОД, а экземпляром – Минск, Варшава и т.д Одно из основных требований к организации БД – это обеспечение возможности отыскания одних сущностей по значениям других, для чего необходимо установить между ними определенные связи. Каждая сущность может обладать любым количеством связей с другими сущностями модели. 2. Связь — поименованная ассоциация между двумя сущностями, значимая для рассматриваемой предметной области. Связь — это ассоциация между сущностями, при которой каждый экземпляр одной сущности ассоциирован с произвольным (в том числе нулевым) количеством экземпляров второй сущности, и наоборот. 3. Атрибут — любая характеристика сущности, значимая для рассматриваемой предметной области и предназначенная для идентификации, характеристики сущности. Атрибут – тип характеристик или свойств, ассоциированных с множеством реальных или абстрактных объектов (людей, мест, событий, состояний, идей, предметов и т.д.). Экземпляр атрибута — это определенная характеристика отдельного элемента множества. Экземпляр атрибута определяется типом характеристики и ее значением, называемым значением атрибута. Его наименование должно быть уникальным для конкретного типа сущности, но может быть одинаковым для различного типа сущностей Каждая сущность должна обладать уникальным идентификатором (Ключом). Каждый экземпляр сущности должен однозначно идентифицироваться и отличаться от всех других экземпляров данного типа сущности. 4. Ключ – минимальный набор атрибутов, по значениям которых можно однозначно найти требуемый экземпляр сущности. Минимальность означает, что исключение из набора любого атрибута не позволяет идентифицировать сущность по оставшимся атрибутам 2.Объясните, для чего предназначена группировка данных в MySQL? Опишите, как группировка используется совместно с агрегатными функциями? Приведите пример SELECT-запроса с использованием группировки. Укажите для чего используется оператор HAVING? Группировка данных – это разбиение данных на группы по значениям какого-либо поля или полей при их выборке. То есть данные в таблицы разбиваются на группы. За осуществление группировки в MySQL отвечает оператор GROUP BY. Поскольку разбиение мы можем осуществлять при выборке данных, то этот оператор используется в запросе SELECT. Также может использоваться оператор HAVING, с помощью которого можно осуществлять фильтрацию полученных групп. В общем виде, SELECT-запрос с использованием группировки имеет следующий вид: SELECT столбцы FROM имя_таблицы [WHERE условие_фильтрации_строк] [GROUP BY столбцы_для_группировки] [HAVING условие_фильтрации_групп]. 3.Дана прямоугольная матрица, элементами которой являются случайные целые числа. Руководствуясь правилами работы с массивами, для каждого столбца определите среднее арифметическое его нечетных элементов и запишите полученные данные в новый массив. Организуйте удобный пользовательский интерфейс. Спроектируйте консольное приложение на языке программирования С#. //Метод Print для вывода на экран элементов одномерного массива static void Print(double[] a) { foreach (double elem in a) { Console.Write("{0,5:f2} ", elem); } Console.WriteLine(); } //Перегруженная версия метода Print для вывода на экран элементов двумерного массива static void Print(int[,] a) { for (int i = 0; i < a.GetLength(0); i++) { for (int j = 0; j < a.GetLength(1); j++) { Console.Write("{0} ", a[i, j]); } Console.WriteLine(); } } static void Input(out int[,] a) { Console.Write("n: "); int n = int.Parse(Console.ReadLine()); Console.Write("m: "); int m = int.Parse(Console.ReadLine()); a = new int[n, m]; for (int i = 0; i < a.GetLength(0); i++) { for (int j = 0; j < a.GetLength(1); j++) { Random rnd = new Random(); a[i, j] = rnd.Next(0, 10); } } } static double[] F(int[,] a) { double[] b = new double[a.GetLength(1)]; //для каждога столбца j массива а for (int j = 0; j < a.GetLength(1); j++) { //вначале подсчитываем сумму и количество нечетных элементов в столбце j int k = 0; for (int i = 0; i < a.GetLength(0); i++) { if (a[i, j] % 2 != 0) { //j элемент массива b используем для подсчета суммы искомых элементов b[j] += a[i, j]; //переменную k используем для подсчета количества искомых элементов k++; } } //вычисляем среднее арифметическое значение нечетных элементов j if (k != 0) { b[j] /= k; } } //в качетсве результата возвращаем ссылку на одномерный массив b, //каждый элемент которого равен среднему арифметическому значению нечетных элементов //соответствующего столбца массива a return b; } static void Main(string[] args) { int[,] a; Input(out a); Console.WriteLine("Исходный двумерный массив:"); Print(a); double[] b = F(a); Console.WriteLine("Исходный одномерный массив:"); Print(b); } 4. Руководствуясь правилами объявления переменных, объявите переменную типа str. В строке присутствует двоеточие. Определить, сколько символов предшествует двоеточию. Организуйте удобный пользовательский интерфейс. Спроектируйте программу на языке программирования Python. s=input(('Введите строку символов ')) if ':' in s: print("Количество символов до : ", s.index(':')) else: print('Двоиточия нет') БИЛЕТ № 15 Наименование вопроса: 1. Объясните сущность объектно-ориентированного подхода к разработке ПО. Охарактеризуйте основные составляющие объектно-ориентированной методологии. Выделите и опишите основные понятия объектного подхода. В основе ОО подхода лежит представление о том, что программную систему необходимо разрабатывать как совокупность взаимодействующих друг с другом объектов, рассматривая каждый объект как экземпляр определенного класса, причем классы образуют иерархию. Объектно-ориентированный подход наиболее естественно соответствует реальному процессу разработки систем и не только программных, который является итеративным и может потребовать внести изменения в уже разработанные и отлаженные компоненты системы. Составными частями объектно-ориентированной методологии (ООМ) являются: объектно-ориентированный анализ; объектно-ориентированное проектирование; объектно-ориентированное программирование. Обьектно-ориентированное программирование – это методология программирования, которая основана на представлении программы в виде совокупности объектов, каждый из которых является реализацией определенного класса, а классы образуют иерархию на принципах наследования. В данном определении можно выделить три части: 1) объектно-ориентированное программирование использует в качестве элементов конструкции объекты, а не алгоритмы; 2) каждый объект является реализацией определенного класса; 3) классы организованы иерархически. Методы программирования, прежде всего, подразумевают правильное и эффективное использование механизмов языков программирования. Объектно-ориентированное проектирование. Объектно-ориентированное проектирование – это методология проектирования, соединяющая в себе процесс объектной декомпозиции и приемы представления как логической и физической, так статической и динамической моделей проектируемой системы. Объектно-ориентированный анализ. Объектно-ориентированный анализ (ООА) направлен на создание моделей, более близких к реальности, с использованием объектно-ориентированного подхода; это методология, при которой требования формируются на основе понятий классов и объектов, составляющих словарь предметной области. На результатах ООА формируются модели, на которых основывается объектно-ориентированное проектирование; объектно-ориентированное проектирование в свою очередь создает основу для окончательной реализации системы с использованием методологии объектно-ориентированного программирования Основными понятиями объектно-ориентированного подхода являются: Объект — предмет или явление, имеющее четко определенное поведение и обладающие состоянием, поведением и индивидуальностью. Структура и поведение схожих объектов определяют общий для них класс. Класс – это множество объектов, связанных общностью структуры и поведения. Любой объект является экземпляром класса Полиморфизмможет быть интерпретировано как способность класса принадлежать более чем одному типу. Наследованиеозначает построение новых классов на основе существующих с возможностью добавления или переопределения данных и методов. Операцией называется определенное воздействие одного объекта над другим, с целью вызова соответствующей реакции Атрибут – это свойство класса, которое может принимать множество значений. 2. Опишите назначение операторов LIMIT и OFFSET. Приведите пример SELECT-запроса с использованием данных операторов. Если вам необходимо ограничить количество выводимых строк запросом SELECT, то вы можете сделать это при помощи ключевого слова LIMIT, после которого вы указываете количество выводимых строк. Если выборка не превышает данного количества, то она выведется полностью. Если превышает, то количество обрежется до заданного. Оператор OFFSET задаёт смещение относительно начала выборки, чтобы выводить элементы выборки начиная с какого-то конкретного элемента. Размер смещения задаётся числом, которое указывается после слова OFFSET. Пример запроса с использованием данных операторов представлен ниже: SELECT * FROM shop_meta LIMIT 10 OFFSET 0; 3. Руководствуясь правилами объявления переменных, объявите переменную типа char. Определите введенный с клавиатуры символ, и проверьте, является ли введенный символ буквой латинского алфавита. По результатам проверки выведите на экран соответствующее сообщение. Организуйте удобный пользовательский интерфейс. Спроектируйте консольное приложение на языке программирования С#, Console.Write("Введите символ: "); char letter = Convert.ToChar(Console.ReadLine()); if (letter >= 'A' && letter <= 'z') Console.WriteLine($"Символ {letter} является буквой латинского алфавита"); else Console.WriteLine($"Символ {letter} не является буквой латинского алфавита"); 4.Руководствуясь правилами объявления переменных, объявите переменную типа str. В строке слов, разделенных пробелами определить самое длинное слово и вывести его на экран. Случай, когда самых длинных слов может быть несколько, не обрабатывать. Организуйте удобный пользовательский интерфейс. Спроектируйте программу на языке программирования Python. a = "Tom Kennedy Marshal of USA" b = a.split(" ") max=b[0] for i in b: if (len(i)>len(max)): max=i print(max) БИЛЕТ № 16 Наименование вопроса: 1. Опишите суть объектно-ориентированной декомпозиции. Определите и охарактеризуйте основные принципы объектно-ориентированного подхода к разработке ПО. Объектно-ориентированная декомпозиция: Мир представляется совокупностью автономно действующих объектов, моделирующих объекты реального мира. Каждый объект обладает своим собственным поведением. Послав объекту сообщение, можно попросить его выполнить присущее ему действие. Объекты взаимодействуют друг с другом, моделируя поведение системы, соответствующее более высокому уровню. Причина развития: Увеличение размеров программ приводило к необходимости привлечения большего числа программистов, что, в свою очередь, потребовало дополнительных ресурсов для организации их согласованной работы. В процессе разработки приложений заказчик часто изменял функциональные требования, что еще более усложняло процесс создания программного обеспечения. Как показала практика, традиционные методы процедурного программирования не способны справиться ни с нарастающей сложностью программ и их разработки, ни с необходимостью повышения их надежности. Во второй половине 80-х годов возникла настоятельная потребность в новой методологии разработки ПО, которая была бы способна решить весь этот комплекс проблем. Ею стал объектно-ориентированный подход. К основным принципам ОО подхода относятся: Абстрагирование - это выделение таких существенных характеристик объекта, которые отличают его от всех других видов объектов и таким образом чётко определяются особенности данного объекта с точки зрения дальнейшего его рассмотрения. Абстрагирование позволяет отделить самые существенные особенности поведения от несущественных. Инкапсуляция — свойство, позволяющее объединить данные и код в объект и скрыть реализацию объекта от пользователя. При этом пользователю предоставляется только спецификация (интерфейс) объекта. Пользователь может взаимодействовать с объектом только через этот интерфейс. Полиморфизм может быть интерпретировано как способность класса принадлежать более чем одному типу. Наследование означает построение новых классов на основе существующих с возможностью добавления или переопределения данных и методов Модульность - это свойство системы, связанное с возможностью декомпозиции на ряд внутренне связанных, но слабо связанных между собой модулей. Типизация - ограничение предъявляемых классу объектов, препятствующих взаимозамене различных классов и в большинстве случаев сильно сужающих возможность такой замены. Концепция типизации строится на понятии абстрактных типов данных. Сохраняемость /устойчивость - это свойство объекта существовать во времени и/или пространстве, вне зависимости от процессов, породивших данный объект. Иерархия— это ранжированная или упорядоченная система абстракций, расположение их по уровням. Основными видами иерархических структур применительно к сложным системам являются структура классов (иерархия по номенклатуре) и структура объектов (иерархия по составу). Параллелизм-свойство, отличающее активные объекты от пассивных. Для систем, построенных на основе объектно-ориентированного проектировании, реальность может быть представлена, как совокупность взаимодействующих объектов, часть из которых - активна. 2. Перечислите функции для работы со строками в MySQL. Укажите их назначение. Опишите синтаксис одного SELECT-запроса с использованием любой из этих функций. Для работы со строка в MySQL определен ряд встроенных функций: CONCAT: объединяет строки. В качестве параметра принимает от 2-х и более строк, которые надо соединить. CONCAT_WS: также объединяет строки, но в качестве первого параметра принимает разделитель, который будет соединять строки. LENGTH: возвращает количество символов в строке. В качестве параметра в функцию передается строка, для которой надо найти длину. LTRIM: удаляет начальные пробелы из строки. В качестве параметра принимает строку. RTRIM: удаляет конечные пробелы из строки. В качестве параметра принимает строку. TRIM: удаляет начальные и конечные пробелы из строки. В качестве параметра принимает строку. LOCATE(find, search [, start]): возвращает позицию первого вхождения подстроки find в строку search. Дополнительный параметр start позволяет установить позицию в строке search, с которой начинается поиск подстроки find. Если подстрока search не найдена, то возвращается 0. LEFT: вырезает с начала строки определенное количество символов. Первый параметр функции - строка, а второй - количество символов, которые надо вырезать сначала строки. RIGHT: вырезает с конца строки определенное количество символов. Первый параметр функции - строка, а второй - количество символов, которые надо вырезать сначала строки. SUBSTRING(str, start [, length]): вырезает из строки str подстроку, начиная с позиции start. Третий необязательный параметр передает количество вырезаемых символов. REPLACE(search, find, replace): заменяет в строке find подстроку search на подстроку replace. Первый параметр функции - строка, второй - подстрока, которую надо заменить, а третий - подстрока, на которую надо заменить. Пример запроса, который оставляет от имени и фамилии каждого пользователя только первые буквы, таким образом получая инициалы: SELECT LEFT(Name, 1), LEFT(LastName, 1) FROM Customers; 3. Руководствуясь правилами объявления переменных, объявите переменную типа string. Определите количество слов в строке, у которых первый и последний символ совпадают между собой. Строку ввести с клавиатуры. Организуйте удобный пользовательский интерфейс. Спроектируйте консольное приложение на языке программирования С#. int count = 0; Console.Write("Введите строку: "); string text = Console.ReadLine(); string[] textSplit = text.Split(); foreach (string word in textSplit) { char[] wordChar = word.ToCharArray(); if (wordChar[0] == wordChar[wordChar.Length - 1]) { count++; } } Console.WriteLine($"Количество слов: {count}"); 4. Руководствуясь правилами объявления переменных, объявите переменную типа list. Сформируйте новый список, в котором нечетные числа в начале списка, а четные – в конце. Организуйте удобный пользовательский интерфейс. Спроектируйте программу на языке программирования Python. my_list = [1, 4, 5, 6, 7, 8, 77, 99, 33, 55] print ('Исходный массив: ',my_list) my_list2 =[] my_list3 =[] for i in my_list: if i%2 == 0: my_list2.append(i) else: my_list3.append(i) print ('Измененный масив: ',my_list3+my_list2) БИЛЕТ № 17 Наименование вопроса: 1. Опишите отличия структурных и объектно-ориентированных методик к разработке ПО. Выделите основные преимущества и недостатки структурных и объектно-ориентированных методик. Основное отличие структурной от объектной методики заключается в четком отделении функций (методов обработки данных) от самих данных. Структурные методики рассматривают организацию как набор функций, преобразующий поступающий поток информации в выходной поток. Процесс преобразования информации потребляет определенные ресурсы. Объектные методики рассматривают моделируемую организацию как набор взаимодействующих объектов – производственных единиц. Объект определяется как осязаемая реальность – предмет или явление, имеющие четко определяемое поведение. Целью применения данной методики является выделение объектов, составляющих организацию, и распределение между ними ответственностей за выполняемые действия. Достоинствами ОО подхода по сравнению со структурными методами являются: использование на стадии анализа моделей близких к реальности; обеспечение возможности повторного использования разработанного ПО позволяющего существенно сократить сроки и снизить затраты на разработку каждой последующей системы; объектная модель естественна, поскольку ориентированна на человеческое восприятие мира. создание более открытых систем; полное использование описательных возможностей объектно-ориентированных языков программирования. объектная декомпозиция позволяет избежать создания сложных моделей, так как она предполагает эволюционный путь развития модели на базе относительно небольших подсистем. К недостаткам объектно-ориентированного подхода относятся: высокие начальные затраты. Этот подход не дает немедленной отдачи. Эффект от его применения сказывается после разработки двух–трех проектов и накопления повторно используемых компонентов. Диаграммы, отражающие специфику объектного подхода, менее наглядны. Невозможность проведения детального анализа процессов; Неполнота и незавершенность некоторых видов диаграмм, возможность их неверной интерпретации Достоинством функциональных моделей является: реализация структурного подхода к проектированию ИС по принципу "сверху-вниз", когда каждый функциональный блок может быть декомпозирован на множество подфункций и т.д., выполняя, таким образом, модульное проектирование ИС. наглядность представления. применение универсальных графических языков моделирования IDEF0, IDEF3 и DFD обеспечивает логическую целостность и полноту описания, проверенность временем и широкое распространение среди аналитиков и разработчиков Главные недостатки структурных моделей: процессы и данные существуют отдельно друг от друга – помимо функциональной декомпозиции существует структура данных, находящаяся на втором плане. сложность восприятия иерархически упорядоченной информации; необходимость следования жесткой структуре, которая не всегда необходима 2. Укажите для чего предназначены подзапросы в MySQL. В каких местах внешнего запроса могут располагаться подзапросы? Объясните в чём отличие не коррелирующего подзапроса от коррелирующего? Подзапросы (subqueries) представляют собой выражения SELECT, которые встроены в другие запросы SQL. Подзапросы используются тогда, когда нам, прежде чем выполнить какое-то действие в таблице (SELECT, UPDATE, DELETE, INSERT) нужно предварительно пройтись по таблице (этой же или другой) и что-то получить или вычислить, и потом использовать это в основном (внешнем) запросе. Все подзапросы можно разделить на 4 группы: SELECT-запрос внутри другого SELECT-запроса; SELECT-запрос внутри INSERT; SELECT-запрос внутри UPDATE; SELECT-запрос внутри DELETE. В SELECT-запросах подзапрос может находится в следующих позициях: В условии в выражении WHERE; В условии в выражении HAVING; В качестве таблицы для выборки в выражении FROM; В качестве спецификации столбца в выражении SELECT; Если подзапрос не коррелирующий, то он выполняется 1 раз, возвращает значение или набор значений, которые далее используются для всех строк внешнего запроса. Такой запрос возвращает результат, который не соотносится (не коррелирует) с конкретными строками основного запроса, а используется всеми строками. Если подзапрос коррелирующий, это значит, что для каждой строки внешнего запроса подзапрос каждый раз будет возвращать определённое значение или набор значений. Иными словами, результат, выполнения подзапроса зависит от значений, возвращаемых основным запросом. 3. Руководствуясь правилами объявления коллекций, создайте пустой список однотипных объектов типа string. Выполните следующие операции над списком, используя основные методы: добавление элементов в конец списка, вставка элемента в начало списка, сортировка списка, поиск заданного элемента списка, удаление элементов списка. Организуйте удобный пользовательский интерфейс. Спроектируйте консольное приложение на языке программирования С#. List //добавление в конец names.Add("Иванов"); names.Add("Сидоров"); names.Add("Васильев"); //вставка в начало names.Insert(0, "Петров"); Console.WriteLine("Список: "); int k = names.Count; for(int i=0;i { Console.WriteLine(names[i]); } //сортировка списка names.Sort(); Console.WriteLine("\nОтсортированный список: "); for (int i = 0; i < names.Count; i++) { Console.WriteLine(names[i]); } //поиск string name = "Свиридов"; int p = names.IndexOf(name); if (p != -1) { Console.WriteLine("{0}{1}", names[p], p); } else { Console.WriteLine("\nЭлемента {0} в списке нет\n", name); } //удаление элемента bool r = names.Remove("Иванов"); if (r) Console.WriteLine("Иванов-удален\n"); Console.Write(names[0]); names.RemoveAt(0); Console.WriteLine("-удален\n"); Console.WriteLine("Список: "); for (int i = 0; i < names.Count; i++) { Console.WriteLine(names[i]); } 4. Руководствуясь правилами объявления переменных, объявите переменную типа list. В списке, состоящем из положительных и отрицательных целых чисел, определите первый, третий и шестой положительные элементы и вычислите их произведение. Организуйте удобный пользовательский интерфейс. Спроектируйте программу на языке программирования Python. a = [1,6,9,-6,5,-9,5,6,8,9] print(a) i = j = 0 i1 = i3 = i6 = -1 while i < 20: if a[i] > 0: if j == 1: i1 = i elif j == 3: i3 = i elif j == 6: i6 = i break j += 1 i += 1 if i6 > 0: mult = a[i1] * a[i3] * a[i6] print("%d * %d * %d = %d" % (a[i1], a[i3], a[i6], mult)) #240 БИЛЕТ № 18 Наименование вопроса: 1. Дайте определение понятий «Язык моделирования» и «Нотация». Объясните сущность унифицированного языка моделирования UML (Unified Modeling Language). Выделите и охарактеризуйте основные типы отношений в UML. Язык моделирования — это нотация (в основном графическая), которая используется методом для описания проектов. Нотация – совокупность графических объектов, которые используются в моделях; она является синтаксисом языка моделирования. UML – язык визуального моделирования для решения задач общего характера, который используется при определении, визуализации, конструировании и документировании системы. С помощью языка UML можно фиксировать решения, принятые при создании различных систем. Он используется для того, чтобы лучше понимать, проектировать, поддерживать и контролировать эти системы.Данный язык упрощает процесс проектирования, снижает его стоимость и повышает эффективность. Язык UML служит для составления чертежей программного обеспечения, визуализации, специфицирования, конструирования и документирования систем, в которых большая роль принадлежит программному обеспечению. UML не является языком программирования. Программный код можно получить на основе созданной модели с помощью инструментальных средств, поддерживающих UML и содержащий генераторы кода. С другой стороны, на основе исходного кода можно вставить UML-модели уже существующих программ. В UML имеются четыре разновидности отношений:
2. Перечислите функции для работы с датами в MySQL. Укажите их назначение. Опишите синтаксис одного SELECT-запроса с использованием любой из этих функций. MySQL имеет ряд встроенных функций для работы с датами и временем. Функции NOW(), SYSDATE(), CURRENT_TIMESTAMP() возвращают текущую локальную дату и время на основе системных часов в виде объекта datetime. Все три функции возвращают одинаковый результат. Функции CURDATE и CURRENT_DATE возвращают текущую локальную дату в виде объекта date. Функции CURTIME и CURRENT_TIME возвращают текущее время в виде объекта time. DAYOFMONTH(date) возвращает день месяца в виде числового значения DAYOFWEEK(date) возвращает день недели в виде числового значения DAYOFYEAR(date) возвращает номер дня в году MONTH(date) возвращает месяц даты YEAR(date) возвращает год из даты QUARTER(date) возвращает номер квартала года WEEK(date [, first]) возвращает номер недели года. Необязательный параметр позволяет задать стартовый день недели. Если этот параметр равен 1, то первым днем считается понедельник, иначе воскресенье LAST_DAY(date) возвращает последний день месяца в виде даты DAYNAME(date) возвращает название дня недели MONTHNAME(date) возвращает название месяца HOUR(time) возвращает час времени MINUTE(time) возвращает минуту времени SECOND(time) возвращает секунду времени |