===Структуры данных=== [[https://informatics.mccme.ru/mod/statements/view.php?id=30086#1 ArrayList Java]] в решении должна быть одна пара квадратных скобок [[https://informatics.mccme.ru/mod/statements/view.php?id=40362#1 Очереди, стеки, деки просто]] [[https://informatics.mccme.ru/moodle/mod/statements/view3.php?id=40363#1 Очереди, стеки, деки сложно]]
[[http://axis.bplaced.net/news/773 Список]] Напишите двусвязный список, сравните его эффективность с ArrayList и LinkedList.
===Реляционные базы данных. Язык SQL=== [[https://docs.google.com/spreadsheets/d/13OVq-MHbm6hxHf1yGDbiWhfD2dn5onxFOHBOnzpu8B4/edit?usp=sharing Результаты]] Получить таблицы *одним запросом*: 1. Фамилия лектора, предмет, который он ведет. 2. Названия университетов, рейтинг которых выше среднего 3. ID и фамилии студентов, сдавших более трех экзаменов 4. Количество университетов, в которых учится более 100 студентов 5. Количество экзаменов, сданных каждым студентом (ID, Фамилия, количество).
[[https://docs.google.com/forms/d/e/1FAIpQLSc-wpm7XzYNVK25HP7Xl_lmp-KO52xT9vxVG95FfPrHzaUCdg/viewform Таблица для сдачи]]
Для работы (обучения) удобно использовать SQLite. Почему? **0. Soft** Удобно работать при помощи SQLite Browser. Установите его. **1. Создание таблиц** [[http://xbb.uz/db/Tipy-dannyh-v-SQLite-versii-3 Какие типы данных есть в SQLitе? (ДО п. 2)]] Изучите синтаксис SQL для [[http://moonexcel.com.ua/уроки-sql14-создание-таблиц-create-table_ru создания и удаления таблиц]]
Создайте базу данных из след. таблиц (какие поля можно и нужно сделать ключевыми?)
**2. Наполнение данными** Изучите [[http://www.sql-tutorial.ru/ru/book_operator_insert.html синтаксис команды INSERT]].
В каждой таблице должно быть не менее 100 записей. Для того, чтобы сделать это быстро, стоит использовать скрипты - программы, генерирующие команды INSERT
**3. Запросы а выборку из одной таблицы** [[http://www.sql-tutorial.ru/ru/book_simple_select_statement.html Простейшие варианты]] [[http://2sql.ru/novosti/sql-where/ Условие WHERE]] [[https://function-x.ru/sql_select.html Дополнительные возможности SELECT]] [[http://webmasterschool.ru/sql2/ch7.php Вычисляемые поля]]
==== Задачи на простой SELECT ====
**Совсем просто**
1. Напишите запрос для вывода идентификатора (номера) предмета обучения, его наименования, семестра, в котором он читается, и количества отводимых на этот предмет часов для всех строк таблицы SUBJECT.
2. Напишите запрос, выбирающий все данные из таблицы STUDENT, расположив столбцы таблицы в следующем порядке: KURS, SURNAME, NAME, STIPEND.
3. Напишите запрос, позволяющий получить из таблицы EXAM_MARKS значения столбца MARK (экзаменационная оценка) для всех студентов, исключив из списка повторение одинаковых строк.
4. Напишите запрос, выбирающий данные о фамилии, имени и номере курса для студентов, получающих стипендию больше 140.
5. Напишите запрос, который выполняет вывод списка университетов, рейтинг которых превышает 300 баллов.
6. Напишите запрос на вывод находящихся в таблице EXAM_MARKS номеров предметов обучения, экзамены по которым сдавались между 10 и 20 января 1999 года.
7. Напишите запрос на вывод названий предметов обучения, начинающихся на букву «И».
8. Напишите запрос для выбора из таблицы EXAM_MARKS записей, в которых отсутствуют значения оценок (поле MARK).
**Вычисления в запросах SELECT**
1. Составьте запрос для таблицы STUDENT таким образом, чтобы выходная таблица содержала один столбец, содержащий последовательность разделенных символом «;» (точка с запятой) значений всех столбцов этой таблицы, и при этом текстовые значения должны отображаться прописными символами (верхний регистр), то есть быть представленными в следующем виде: 10;КУЗНЕЦОВ;БОРИС;0;БРЯНСК;8/12/1981;10.
2. Составьте запрос для таблицы STUDENT таким образом, чтобы выходная таблица содержала всего один столбец в следующем виде: б.кузнецов;место жительства-брянск;родился:8-дек-1981.
3. Вывести фамилии, имена студентов и величину получаемых ими стипендий, при этом значения стипендий должны быть увеличены в 100 раз.
4. Составьте запрос для таблицы UNIVERSITY таким образом, чтобы выходная таблица содержала всего один столбец в следующем виде: Код-10;ВГУ-г. ВОРОНЕЖ;Рейтинг=296.
====Изменение данных==== Измените некоторые данные в таблицах на значения NULL
[[http://phys.bspu.by/static/lib/inf/int/tarasov/c10_agr.html Агрегирующие функции]] [[http://moonexcel.com.ua/уроки-sql8-группировка-данных-group-by_ru Группировка в запросах]]
====Агрегирующие функции====
1. Посчитайте количество записей по таблице с NULL значениями по какому-нибудь полю, включая и не включая их. 2. Напишите запрос для подсчета количества студентов, сдававших экзамен по предмету обучения с идентификатором, равным 20. 3. Напишите запрос, который выполняет выборку для каждого студента значения его идентификатора и минимальной из полученных им оценок. 4. Напишите запрос, выполняющий вывод фамилии первого в алфавитном порядке (по фамилии) студента, фамилия которого начинается на букву «И». 5. Напишите запрос, который выполняет вывод данных для каждого конкретного дня сдачи экзамена о количестве студентов, сдававших экзамен в этот день. 6. Напишите запрос для получения среднего балла для каждого студента. 7. Напишите запрос для определения количества студентов, сдававших каждый экзамен.
====Группировка и сортировка====
1. Предположим, что стипендия всем студентам увеличена на 20%. Напишите запрос к таблице STUDENT, выполняющий вывод номера студента, фамилию студента и величину увеличенной стипендии. Выходные данные упорядочить: а) по значению последнего столбца (величине стипендии); б) в алфавитном порядке фамилий студентов. 2. Напишите запрос, выполняющий вывод списка предметов обучения в порядке а) убывания семестров и б) возрастания отводимых на предмет часов. Поле семестра в выходных данных должно быть первым, за ним должны следовать имя предмета обучения и идентификатор предмета. 3. Напишите запрос, который выполняет вывод а) среднего, б) минимального, в) максимального баллов всех студентов для каждой даты сдачи экзаменов и который представляет результаты в порядке убывания этих значений.
====Связанные подзапросы==== 1. Напишите запрос с подзапросом для получения данных обо всех оценках студента с фамилией «Иванов». Предположим, что его персональный номер неизвестен. Всегда ли такой запрос будет корректным? 2. Напишите запрос, выбирающий данные об именах всех студентов, имеющих по предмету с идентификатором 101 балл выше общего среднего балла. 3. Напишите запрос, который выполняет выборку имен всех студентов, имеющих по предмету с идентификатором 102 балл ниже общего среднего балла 4. Напишите запрос, выполняющий вывод количества предметов, по которым экзаменовался каждый студент, сдававший более 20 предметов. 5. Напишите команду SELECT, использующую связанные подзапросы и выполняющую вывод имен и идентификаторов студентов, у которых стипендия совпадает с максимальным значением стипендии для города, в котором живет студент. 6. Напишите запрос, который позволяет вывести имена и идентификаторы всех студентов, для которых точно известно, что они проживают в городе, где нет ни одного университета. 7. Напишите два запроса, которые позволяют вывести имена и идентификаторы всех студентов, для которых точно известно, что он проживают не в том городе, где расположен их университет. 8. Напишите запрос, позволяющий вывести данные обо всех студентах, обучающихся в вузах, которые имеют рейтинг выше 300 9. Напишите запрос, выбирающий сведения обо всех студентах, для которых в том же городе, где живет студент, существуют университеты, в которых он не учится. 10. Напишите запрос, выбирающий из таблицы SUBJECT данные о названиях предметов обучения, экзамены по которым сданы более чем одним студентом.
====JDBC=== [[https://ashishkin.ru/blog/sqlite-v-eclipse.html Подключение драйвера, начало работы]] [[https://bitbucket.org/xerial/sqlite-jdbc/downloads/ Драйвер JDBC]]
[[http://java-online.ru/swing-jtable.xhtml Таблица в swing]]
// The column count starts from 1 for (int i = 1; i <= columnCount; i++ ) { String name = rsmd.getColumnName(i); // Do stuff with name }
Написать GUI-программу c полем ввода и кнопкой Пишем в поле ввода запрос SELECT, при нажатии на кнопку - результат отображается в таблице.
===Протокол HTTP 1.0 на практике===
Броузер шлет обычно запрос по по версии 1.1, но отвечать ему можно и нужно по протоколу 1.0.
**0. Prerequisites** Практика: Клиент - [[https://www.putty.org/ putty]] a) Открыть серверный сокет, передать клиенту строку символов, забрать от клиента строку символов b) То же, несколько строк. с) Переподключение: сделать так, чтобы несколько клиентов могли подключаться последовательно.
**1. Основы HTTP** a) Основные ссылки по HTTP-протоколу b) Виды запросов c) Синтаксис GET-запроса d) Структура ответа, основные коды ответа e) Значимые заголовки
**2. Практика. Простой GET-запрос** a) Получение браузером от сервера простой статичной Web-страницы
**3. Практика. Работа с файлами** a) Вывод содержимого файла из текущего каталога в консоль б) То же из подкаталога текущего каталога в) Скопировать бинарный, например, графический файл.
**4. Практика. Передача файлов по HTTP** a) Получение браузером конкретного HTML-файла, путь которого жестко прописан в коде сервера b) Получение браузером картинки, путь которой жестко прописан в коде сервера.
**5. Практика. GET-запрос** a) Выделить путь из GET-запроса - отдать браузеру требуемый файл с правильным Content-type b) Обработать ошибку 404.
**6. Теория. Web-формы HTML** a) Устройство HTML формы (тег FORM атрибут ACTION, атрибут METHOD, Submit) b) Пользовательский ввод (поле ввода, поле для ввода пароля, checkbox, radiobutton, выпадающий список)
**7. Практика. Web-формы HTML** a) Создать форму со всеми элементами с GET запросом на localhost
**8. Практика. Web-формы GET** a) Проанализировать получаемые данные браузера по GET запросу формы б) Сформировать ответ браузеру, передав полученные данные в HTML
**9. Практика. Web-формы POST** a) Проанализировать получаемые данные браузера по POST запросу формы б) Сформировать ответ браузеру, передав полученные данные в HTML
[[http://skipy.ru/technics/layouts.html Менеджеры компоновки]] [[http://www.quizful.net/post/swing-layout-managers вторая ссылка]]
[[http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Java SDK]] [[http://www.fandroid.info/ustanovka-jdk-java-development-kit/ Инструкция по установке]] [[https://docs.oracle.com/javase/10/docs/api/java/lang/String.html Документация по строкам]] 1. [[https://myitschool.ru/book_copy/ Контесты по основам]] 2. Вывести в консоль ровный треугольник Паскаля
---- адрес оригинала: ((/Информатика/Архив/2019/10Б))