среда, 22 января 2025 г.

Урок 19-20. Создание запросов без параметров

Дата проведения занятия 23.01.25, 30.01.25
Фильтрация данных
Запросы 

Пользователю любой информационной системы в первую очередь важно иметь возможность выбрать из БД ту информацию, которая ему нужна в данный момент. Для этого используются запросы.
Запрос - это объект БД, которым мы пока не пользовались.

Запрос - это обращение к СУБД для отбора записей или других операций с данными.

Рассмотрим построение запросов на примере БД БОРЕЙ

Чтобы построить запрос, перейдем на вкладку Запросы, выберем в области Задачи вариант Создать запрос в режиме Дизайна. Перед нами откроется окно Конструктора запросов. Оно выглядит так, как показано на этом рисунке.




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








На рисунке показан бланк, заполненный для формирования такого запроса:
"Вывести фамилии, имена, адреса, должности всех сотрудников из Москвы."
После того, как бланк запроса заполнен, следует сохранить запрос и затем запустить на выполнение. Вот как выглядит результат работы этого запроса











Прежде, чем начать составлять запросы, изучите алгоритм формирования запросов




Урок 19. Целостность БД

Дата проведения занятия 23.01.25

Изучить самостоятельно

Физическая целостность БД (слайд 20)

  • Защиту БД от разрушения при отказе оборудования обеспечивает использование транзакций при внесении изменений.
  • Периодически администраторы делают резервную копию всех данных на дисках и ведут журнал изменений

Логическая целостность БД (слайд 20)

  • Каждое поле имеет свой тип 
  • некоторые поля объявляются обязательными для заполнения 
  • вводятся условия, которые должны выполняться для значений отдельных полей 
  • для сложных данных используются шаблоны ввода 
  • вводятся условия, которые должны выполняться для группы полей 

Ссылочная целостность БД (слайды 26 - 30)

После связывания таблиц происходит дополнительная проверка при вводе данных.
  • В связанное поле подчиненной таблицы можно вводить только те значения, которые имеются в связанном поле главной таблицы.
  • Нельзя удалять запись из главной таблицы, если значение связанного поля используется хотя бы в одной записи подчиненной таблицы.
  • В СУБД при установлении связи с помощью Конструктора связей включается Механизм поддержки целостности данных.


четверг, 19 декабря 2024 г.

Урок 15-18. Многотабличные БД. Три типа связи между таблицами

Дата проведения занятия 26.12.24, 9.01.25 теория, 16.01.25 практика

Теория
БД – компьютерная модель, построенная после проведения классификации объектов

Таблица описывает множество объектов с одинаковыми параметрами (число и названия параметров — одинаковы).
Каждая строка (запись) описывает один объект, т. е. содержит в полях значения параметров.
Поле имеет имя и определенный тип. Все поля с одним именем имеют одинаковый тип. Имя и Тип поля задаются при создании таблицы. Некоторые поля могут быть обязательны для заполнения, а другие нет.
Поле содержит данное определенного типа с определенными свойствами

Тип данных — определяет множество значений, которые может принимать данное поле в различных записях. Свойства поля — длина, формат, значение по умолчанию.
СУБД проверяет вводимое в поле данное на соответствие установленному типу и свойствам (целостность по данным).
В LibreOffice Base используются около 20 типов. Их можно разделить на 5 категорий:

  • числовой (число натуральное, целое, десятичное, двоичное и другие)
  • символьный (текст — одна строка или несколько) 
  • дата/время (дата, время)
  • логический
  • картинка

Записи о разных объектах должны обязательно чем-то отличаться, чтобы иметь возможность выбирать точно нужную запись. Для этого в каждой записи должно быть поле, которое имеет уникальное значение. Такое поле называют ключом или первичным ключом. (слайд 13 - Презентация)
В СУБД Base предлагается создать это поле, если разработчик не создал его сам — это поле ID. Ключ, который добавляется автоматически, называют суррогатным. Это поле обязательно имеет тип INTEGER и должно заполняться автоматически самой СУБД.

Многотабличные БД

Однотабличные БД неудобны, т.к. при большом количестве параметров будут повторяться поля (слайды 22-26 - презентации).
Удобнее классифицировать сведения об объектах и создать несколько таблиц - для каждого класса. При создании многотабличной БД между таблицами устанавливаются связи. Связь устанавливается только между парой таблиц.  

Связывается ключевое поле главной таблицы и  поле подчиненной таблицы, которое называется внешним ключом  (слайды 23 - 25  презентации). 

Существует 3 типа связей между таблицами: 
  • один-ко-многим (1:N), 
  • один-к-одному (1:1), 
  • многие-ко-многим (N:M). 
Виды связей показаны на  слайдах 26-30 презентации

четверг, 12 декабря 2024 г.

Урок 13-14. Основные понятия об ИС и БД

Проблемный вопрос: как организовать хранение огромного количества данных так, чтобы можно было легко находить указанные данные. Пример - библиотека: множество книг стоят на полках …. Как найти нужную?
Можно ли для этого использовать компьютер?

Откуда и каким образом в интернете появились базы данных, в которых поисковые системы ищут ответы на наши вопросы?

Материалы по теме смотрите на странице

Дата проведения занятия 12.12.24

Информационные системы

Информационная система (ИС) в широком смысле - это аппаратные и программные средства, предназначенные для того, чтобы своевременно обеспечить пользователей нужной информацией.
База данных (БД)  это специальным образом организованная совокупность данных о некоторой предметной области, хранящаяся во внешней памяти компьютера.
Система управления БД (СУБД) - это программные средства, которые позволяют выполнять все необходимые операции с БД 
В середине ХХ века  были предложены следующие принципы  проектирования табличных БД:
    ,
  • Каждая таблица описывает один класс объектов;
  • Порядок расположения полей в таблице не имеет значения;
  • Все значения одного поля относятся к одному типу данных;
  • В таблице нет двух одинаковых записей;
  • Порядок расположения  записей в таблице не имеет значения.
  1. Классификация ИС 
  2. Транзакция
Основные определения из предыдущих слайдов запишите в тетрадь.
Понятия БД тесно связаны с понятиями классификации объектов.
Классификация множества объектов помогает установить связи и закономерности внутри этого множества, построить модель, а следовательно изучить. 


БД – и есть компьютерная модель, построенная после проведения классификации. 
Структурирование данных - процесс, приводящий к определенной форме записи данных об объектах предметной области (класса)

Таблицы. Основные определения 


  • Поле  простейший объект БД, предназначенный для хранения значений параметра описываемого объекта.
  • Структура записи - совокупность логически связанных полей, характеризующих параметры реального объекта.
  • Запись – совокупность логически связанных полей, характеризующих свойства описываемого объекта
  • Таблица - совокупность записей одной структуры. В зависимости от структурирования данных в БД может быть несколько таблиц.
  • Ключ - поле или комбинация полей, однозначно определяющая запись.
    В СУБД Base
    в качестве ключа обычно используют тип «Целое [INTEGER]».

На практике работаем с  СУБД в приложении LibreOffice.org Base

четверг, 5 декабря 2024 г.

Урок 12. Поиск минимума , максимума

Дата проведения занятия 5.12.24
В программировании поиск - одна из наиболее часто встречающихся задач невычислительного характера.

Предположим, что мы хотим проанализировать результаты забега на 100 метров.
  • Необходимо выяснить, кто занял первое место.
  • Необходимо выяснить, кто занял 1, 2, 3 место
  • Необходимо выяснить, насколько победитель пробежал быстрее самого слабого участника 
Все эти задачи сводятся к поиску максимального или минимального значения элемента последовательности.
Компьютер не может сравнить разом весь ряд объектов. На каждом шаге он может сравнивать только два объекта. Поэтому в программе необходимо организовать последовательный просмотр элементов последовательности и сравнение значения очередного просматриваемого элемента с некоторым образцом. Самое большое значение в последовательности называется максимумом, самое маленькое - минимумом. Максимумов и минимумов может быть несколько. Значение, которое меньше максимума, но больше всех остальных элементов, называется вторым максимумом. Аналогично, значение, которое больше минимума, но меньше всех остальных элементов, называется вторым минимумом

Пример программы поиска первого максимума

print('Поиск максимума в последовательности из 10 сл чисел от 5 до 20')
from random import *
max_el= 3 # Принудительный макс, самое мин значение
for i in range (10):
    x = randint(5, 20)
    print(x, end=',')
    if x > max_el:
        max_el = x
print ('')
print ('max_el=', max_el)

Пример программы поиска последнего минимума  
print('Поиск минимума в последовательности из 10 сл чисел от 5 до 20')
from random import *
min_el= 25 # Принудительный min, самое max значение
for i in range (10):
    x = randint(5, 20)
    print(x, end=',')
    if x <= min_el:
        min_el = x
print ('')
print ('min_el=', min_el)  

Работа на ПК в классе по группам:

   Написать программу, которая выясняет, насколько максимальное значение больше минимального в последовательности из 15 случайных чисел от 5 до 20

Домашнее Задание (по желанию)

  1. Написать программу, которая считает, сколько максимумов находится в последовательности из 20 случайных чисел от 2 до 8
  2. Написать программу, которая считает, сколько вторых минимумов находится в последовательности из 20 случайных чисел от 10 до 15
 



четверг, 28 ноября 2024 г.

Урок 11. Списки

Дата проведения занятия 28.11.24
Информация с сайтов: Phyton для начинающих, Skillbox Media

До сих пор в Phyton вы имели дело с простыми типами данных. К простым типам относятся порядковые (целые, логические, символьные)  и вещественные типы данных

Сегодня мы переходим к изучению списков. Списки относятся к  структурированным типам данных.

Что такое список?

Список (list) — это упорядоченный набор элементов, каждый из которых имеет свой номер, или индекс, позволяющий быстро получить к нему доступ. Нумерация элементов в списке начинается с 0. Индекс определяет положение элемента в списке.

В одном списке одновременно могут лежать данные разных типов — например, и строки, и числа, и списки. То есть можно построить список, элементами которого будут списки.
Списки называют динамическими структурами данных, потому что их можно менять на ходу: удалить один или несколько элементов, заменить или добавить новые.
Очень важно: списки в Python содержат не сами данные, а ссылки на их расположение в памяти компьютера!

Создание списков

  1.  Пустой список. В нем нет ни одного элемента
    a = [ ]

  2.  Список, заданный перечислением элементов. В списке b 3 элемента.
    Элемент с индексом 0 это 5, элемент с индексом 1 это 15, элемент с индексом 2 это 'cat'
    b = [5, 15, 'cat']

  3.  Список с начальным заполнением. Например, список из 10 нулей
    d = list(10*'0')

  4.  Cписок, построенный с помощью  генератора списков. Генератор списков - способ построить новый список, применяя выражение к каждому элементу последовательности. Генераторы списков очень похожи на цикл for.
b = [i*2 for i in range(20)] # список 20 четных чисел

d = [str(i) for i in range(20)] # список 20 строк


from random import *

a = [randint(2, 8) for i in range(20)] # список 20 случайных чисел

Изменение значения элементов

В программе к элементу списка b с номером i следует обращаться так: b[i]
Можно изменить значение элементов после того, как список создан.
Например
a = [ 1, 2, 3]
print(a) # получим [1, 2, 3]
a[1] = 4 # заменяем значение элемента с индексом 1 на 4 
print(a) # получим  [1, 4, 3]

Встроенные функции для списков

В Python есть  функции, которые позволяют узнавать длину списка, сортировать его и возвращать максимальное и минимальное значение.
  1. len()
    Возвращает длину списка:
    a = [5, 7, 3]
    l = len(a) # 3
  2.  sorted()
    Возвращает отсортированный список:
    a = [5, 7, 3]
    a = sorted (a)
    print (a) #  [3, 5, 7]
  3.  min(), max()
    Возвращают наименьший и наибольший элемент списка:
    a = [5, 7, 3, -5, -2]
    print(max(a), min(a)) # 7 -5
В качестве примера напишем программу Py04.py по следующему заданию:
Заполнить список из 10 элементов случайными целыми  числами от 3 до 15.
Отсортировать список
Вывести значения элементов списка на экран в одну строку
Сосчитать сумму элементов,  вывести сумму на экран с новой строки.

from random import * print('Урок 4') a = [randint(3, 15) for i in range(10)] # список из 10 случайных чисел a = sorted(a) # Сортировка списка print(a) # вывод списка
sum = 0 # обнуление суммы
for i in range(10): # поиск суммы sum += a[i] print ('sum=', sum ) # вывод суммы


Работа на ПК в классе:

0. Запустить среду программирования IDLE (смотрите предыдущий урок)
1. Запустить программу 
Py04.py, показать учителю
2. Далее работаем по вариантам. Прислать учителю текст программ прикрепленным файлом
Вариант 1. 
  1. Заполнить список из 5 элементов четными значениями, начиная с 2.  Вывести элементы на экран в одну строку. Сосчитать сумму элементов,  вывести сумму на экран с новой строки.  
  2. Заполнить список из 8 элементов случайными целыми  числами от 11 до 18.  Вывести элементы на экран в одну строку. Ввести с экрана произвольный номер элемента списка и вывести значение элемента. Если  такого элемента нет, вывести сообщение "Неверный номер элемента"
Вариант 2.
  1. Заполнить список из 6 элементов нечетными значениями, начиная с 1. Вывести элементы на экран в одну строку. Сосчитать сумму элементов,  вывести сумму на экран с новой строки.
  2. Заполнить список из 12 элементов случайными целыми  числами от 15 до 25. Вывести элементы на экран в одну строку. Ввести с экрана произвольный номер элемента списка и вывести значение элемента. Если  такого элемента нет, вывести сообщение "Неверный номер элемента"

Домашнее задание (по желанию)

Прислать учителю информатики по школьной эл почте письмо-отчет с прикрепленными текстами программ о выполнении домашнего задания. 
На оценку 4 можно выполнить задания 1 и 2, на оценку 5 - все 4 задания 
  1. Заполнить список из 9 элементов степенями 2, начиная с нулевой степени (1). Вывести список в одну строку. Найти сумму элементов списка, вывести с новой строки
  2. Заполнить список  из 15 элементов случайными числами от 9 до 27, Вывести список в одну строку. На следующей строке через запятую вывести индексы (номера) всех элементов, значение которых делится на 3
  3. Написать программу, которая заполняет список  из 20 элементов случайными числами от 2 до 12, а затем считает, сколько максимумов находится в списке. Вывести список в одну строку. На следующей строке вывести количество максимумов
  4. Написать программу, которая  заполняет список  из 20 элементов случайными числами от 10 до 25, а затем считает, сколько вторых минимумов находится в списке. Вывести список в одну строку. На следующей строке вывести количество вторых минимумов

четверг, 21 ноября 2024 г.

Урок 10. Цикл FOR + случайные числа

Дата проведения занятия 21.11.24
Для изучения Python  используем главы из учебника Босовой 3.1, 3.2, 3.4 

Цикл FOR -  цикл с заданным числом повторений, цикл с параметром

Цикл - это одна из трех основных алгоритмических конструкций. Нарисуем цикл в тетради
Цикл - многократное повторение некоторой последовательности действий

Как правило, циклы for используются либо для повторения какой-либо последовательности действий заданное число раз, либо для изменения значения переменной в цикле от некоторого начального значения до некоторого конечного.

Для повторения цикла некоторое заданное число раз n можно использовать цикл for вместе с функцией range

Оператор цикла for может иметь такую форму. Эта запись означает, что переменная i будет изменяться от 0 до n-1, а цикл выполнится n раз
for i in range(n):
  
оператор

Оператор цикла for может иметь и такую форму. Эта запись означает, что переменная i будет изменяться с шагом s от a до n-1. Шаг может быть положительным или отрицательным!

for i in range(a, n, s):
  
оператор

 

Текст от слова for до знака : включительно называется заголовком цикла, а оператор после : - телом цикла. Переменная после слова for называется параметром цикла.
Параметр цикла меняется от начального значения до конечного значения, увеличиваясь всякий раз на единицу.
Для каждого значения переменной-параметра выполняется тело цикла. Однократное повторение тела цикла называется итерацией цикла. Значение параметра цикла после завершения цикла считается неопределенным.

Если для цикла for  начальное значение переменной цикла больше конечного значения, то тело цикла не выполнится ни разу.

Изменение переменной-параметра цикла внутри цикла является логической ошибкой.

Обратите внимание: в  теле цикла стоит ТОЛЬКО ОДИН ОПЕРАТОР!
А что делать, если надо выполнить не ОДИН, а НЕСКОЛЬКО операторов? Они должны составлять одно тело, они должны быть написаны с одинаковым СДВИГОМ относительно заголовка.

Случайные числа

Большинство стандартных функций языка Python разбиты на группы по назначению, и
каждая группа записана в отдельный файл, который называется модулем.
Для работы со случайными числами нужно использовать модуль random

1. Случайное число от 0 до 1, тип результата float: random()
2. Случайное  целое число n, в диапазоне  a ≤ n ≤ b : int randint(a,b)
Пример: для того, чтобы записать в переменную a случайное число в диапазоне от 1 до 10,
можно использовать следующие операторы:
from random import randint
a = randint (1,10)

Работа на компьютере

Задание 0. Запуск среды IDLE. Подготовка к работе
1. Для запуска оболочки выберите в меню Пуск --> Программы --> Python 3.12  --> IDLE
2.Для создания файла с программой в меню File выберите пункт New File
3. В открывшемся окне наберите текст программы (обе строки набираем с 1 позиции):
 #Урок 3
 print ('Урок 3. Вас приветствует программа Васи Иванова') 
4. Сохраните текст в своей папке под именем Py03_name.py, выбрав пункт меню File --> Save As. Учтите, что name - это ваша фамилия латинскими буквами.
В этом файле будете сохранять программы, написанные на этом уроке.
Задание 1
Составить блок-схему, написать текст программы, отладить следующие программы
1. Вывести на экран n раз переменную n и текст: "Я знаю случайные числа"
Запустить программу 5 раз
from random import randint
n = randint (1, 5)
for i in range(n):
      print(n, "Я знаю случайные числа")

За выполнение заданий 0 и 1 - оценка 3
Для получения оценки 4-5 нужно выполнить дополнительные задания

Задание 2. Написать и отладить  программу + письмо учителю с присоединенным текстом программы
1. Ввести целое число a, вывести 5 целых чисел, которые находятся на числовой оси правее числа a, каждое следующее больше на 1

2. Ввести целое число b, вывести 7 целых чисел, которые находятся на числовой оси левее числа b, каждое следующее меньше на 2.  (Использовать отрицательный шаг в заголовке цикла)


Задание 3. Написать и отладить  программу + письмо учителю с присоединенным текстом программы

1. Ввести число n (от 1 до 7). Затем в цикле получить  n случайных чисел, найти их сумму, вывести сумму на экран
2. Ввести число m (сколько знаков - неизвестно). В цикле сосчитать, сколько в нем цифр, найти сумму цифр числа

Домашнее задание

По желанию. Доделать программы, начатые в классе, отправить письмо учителю с прикрепленным текстом программы + скриншотом выполнения программы