Это старая версия Информатика/Архив/2019/10Б за 08.04.2019 10:38 под редакцией VladimirIlyin.

Просмотр кода страницы 10 Б страница

=== Задачи на SELECT ===
Имя, фамилия

1. Напишите запрос, выбирающий все данные из таблицы STUDENT,
расположив столбцы таблицы в следующем порядке: KURS, SURNAME, NAME, STIPEND.

2. Напишите запрос SELECT, который выводит наименование предмета обучения (SUBJECT_NAME) и количество часов (HOUR) для каждого
предмета (SUBJECT) в 4-м семестре (SEMESTER).

3. Напишите запрос, который выводит список фамилий студентов,
обучающихся на третьем и последующих курсах.

4. Напишите запрос, выполняющий выборку из таблицы SUBJECT
названий всех предметов обучения, на которые отводится более 30
часов.

5. Напишите запрос к таблице STUDENT для вывода списка фамилий
(SURNAME), имен (NAME)- и номера курса (KURS) всех студентов со
стипендией, большей или равной 100, и живущих в Воронеже.

6. Напишите запрос, выбирающий сведения о студентах, у которых
имена начинаются на буквы «И» или «С».

7. Напишите запрос на вывод из таблицы EXAM_MARKS записей, имеющих в поле MARK значения оценок.

8. Составьте запрос для таблицы STUDENT таким образом, чтобы выходная таблица содержала всего один столбец в следующем виде:
Б.КУЗНЕЦОВ;местожительства-БРЯНСК;родился-8.12.81.

9. Составьте запрос для таблицы STUDENT таким образом, чтобы выходная таблица содержала всего один столбец в следующем виде:
Борис Кузнецов родился в 1981 году.

10. То же, что и в задаче 8, но только для студентов 1, 2 и 4-го курсов
и таким образом, чтобы фамилии и имена были выведены прописными буквами.


==Программирование==


===Структуры данных===
[[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===
Для работы (обучения) удобно использовать 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 создания и удаления таблиц]]

Создайте базу данных из след. таблиц (какие поля можно и нужно сделать ключевыми?)

STUDENT : ID, SURNAME, NAME, STIPEND, KURS, CITY, BIRTHDAY, UNIV_ID
LECTURER : ID,  SURNAME, NAME, CITY, UNIV_ID
SUBJECT : ID, NAME, HOUR, SEMESTER
UNIVERCITY : ID, UNIV_NAME, RAITING, CITY
EXAM_MARKS : EXAM_ID, STUDENT_ID, SUBJ_ID, MARK, EXAM_DATE
SUBJ_LECT : LECTURER_ID, SUBJECT_ID

**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.


[[http://phys.bspu.by/static/lib/inf/int/tarasov/c10_agr.html Агрегирующие функции]]
[[http://moonexcel.com.ua/%D1%83%D1%80%D0%BE%D0%BA%D0%B8-sql8-%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-group-by_ru Группировка в запросах]]

Задачи

==Агрегирующие функции==

1. Напишите запрос для подсчета количества студентов, сдававших
экзамен по предмету обучения с идентификатором, равным 20.
2. Напишите запрос, который выполняет выборку для каждого студента значения его идентификатора и минимальной из полученных им оценок.
3. Напишите запрос, выполняющий вывод фамилии первого в алфавитном порядке (по фамилии) студента, фамилия которого начинается на букву «И».
4. Напишите запрос, который выполняет вывод данных для каждого
конкретного дня сдачи экзамена о количестве студентов, сдававших экзамен в этот день.
5. Напишите запрос для получения среднего балла для каждого студента.
6. Напишите запрос для определения количества студентов, сдававших каждый экзамен.


==Группировка==

1. Предположим, что стипендия всем студентам увеличена на 20%.
Напишите запрос к таблице STUDENT, выполняющий вывод номера студента, фамилию студента и величину увеличенной стипендии. Выходные данные упорядочить: а) по значению последнего
столбца (величине стипендии); б) в алфавитном порядке фамилий
студентов.
2. Напишите запрос, выполняющий вывод списка предметов обучения в порядке а) убывания семестров и б) возрастания отводимых
на предмет часов. Поле семестра в выходных данных должно быть
первым, за ним должны следовать имя предмета обучения и идентификатор предмета.
3. Напишите запрос, который выполняет вывод а) среднего, б) минимального, в) максимального баллов всех студентов для каждой даты сдачи экзаменов и который представляет результаты в порядке
убывания этих значений.


===Протокол 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. Вывести в консоль ровный треугольник Паскаля