среда, 29 апреля 2020 г.

Многотабличные базы данных

Дистанционное обучение. Дата занятия 29.04.20-30.04.20
Срок выполнения задания (решение двух задач) 22:00 час 30.04.20

Почему бы не собрать все данные в одной таблице?
У однотабличной модели есть недостатки:

  • дублирование данных
  • при изменении каких-то данных может потребоваться изменение нескольких записей
  • нет защиты от опечаток
Однотабличная БД - это аналог картотеки, в которой все карточки имеют одинаковую структуру. А на практике в одной БД нужно хранить данные, относящиеся к объектам разных типов, которые связаны между собой.

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

В конце презентации находится задание, которое надо выполнить сегодня, до 22:00

вторник, 21 апреля 2020 г.

БД как модель предметной области

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

ИНФОРМАЦИОННЫЕ СИСТЕМЫ И БД

В настоящее время для хранения, поиска, выдачи информации по запросам пользователя используются различные информационные системы.

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

В середине ХХ века были предложены следующие принципы проектирования табличных БД:
  • Каждая таблица описывает один класс объектов;
  • Порядок расположения полей в таблице не имеет значения;
  • Все значения одного поля относятся к одному типу данных;
  • В таблице нет двух одинаковых записей;
  • Порядок расположения записей в таблице не имеет значения.

Поэтому можно дать следующее определение.
Реляционная БД - это БД, которую можно представить в виде набора таблиц с установленными между ними связями.

Система управления БД (СУБД) - это программное обеспечение для создания баз данных, хранения и поиска в них необходимой информации.

Для проектирования БД средней сложности наиболее часто используются Microsoft Access, OpenOffice.org Base, LibreOffice Base.

ОБЪЕКТЫ СУБД

Основными объектами СУБД являются:
  • Таблицы - это основной тип объектов. В таблицах хранятся данные.
  • Формы - это вспомогательные объекты. Они обеспечивают удобную работу с данными в таблице.
  • Запросы - это команды и результаты обращения пользователя к СУБД для поиска данных, сортировки, добавления, и удаления и обновления записей.
  • Отчеты - это документы, сформированные на основе таблиц и запросов и предназначенные для вывода на печать.

РЕЛЯЦИОННЫЕ БД

Реляционная БД может состоять из одной или нескольких взаимосвязанных таблиц.
Строка таблицы называется записью, столбец - полем.

Запись содержит информацию об одном объекте (Например, об одной книге в библиотеке)

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

ТИПЫ ДАННЫХ БД

Основные типы полей:
  • числовой - для полей, содержащих числовую информацию. Длина поля - стандартная
  • текстовый - для полей, содержащих произвольные последовательности символов. Длина поля - это максимальное количество символов, которые можно записать в это поле
  • логический - для полей, данные которых могут принимать только 2 значения: ДА/НЕТ или 1/0. Длина поля - стандартная
  • дата - для полей, содержащих календарные даты. Длина поля - стандартная

ОТВЕТИТЬ НА ВОПРОСЫ ДО 22:00 23.04

Разбор WHILE5

WHILE5

Вычислить сумму 10-ти четных чисел начиная с 14, используя цикл while (т.е. 14 + 16 + 18 ...  - всего 10 чисел).

В while5 надо написать цикл. Требуется вспомогательная переменная, с помощью которой можно будет подсчитать сумму четных чисел (SUM). Изначально SUM = 0.

Начальное значение для переменной i должно быть равно 14. 

Далее начинается цикл (while (i < ?) do) //подобрать число, чтобы действительно складывалось ровно 10 четных чисел:
  в цикле проверяем, является ли текущее значение i - четным (if (i mod 2 = 0) then)
  если да, то увеличиваем значение переменной SUM - прибавляем к переменной суммы четное число (SUM := SUM + i)
  если нет, то ничего не делаем.
  Переходим к следующему значению i (i := i + 1)
На этом цикл заканчивается.

После цикла нужно вывести значение SUM.


Программа на языке Pascal:

var i, sum:integer;
  begin
  sum := 0; //задаем начальное значение накапливаемой переменной;
  i := 14; //задаем первое четное число 14
  while (i <= 32) do //начинается цикл
  begin
     if (i mod 2 = 0) then // если число четное
        sum := sum + i; //прибавляем его к сумме
    i := i + 1; //переходим к следующему числу
  end;
  writeln('sum = ', sum);
end.




























2 способ:

четные число отличаются друг от друга на 2.

var i, sum:integer;
  begin
  sum := 0; //задаем начальное значение накапливаемой переменной;
  i := 14; //задаем первое четное число 14
  while (i <= 32) do //начинается цикл
  begin
     sum := sum + i; //прибавляем четное число к сумме
    i := i + 2; //переходим к следующему четному числу
  end;
  writeln('sum = ', sum);
end.




вторник, 14 апреля 2020 г.

Цикл с предусловием while.

Дистанционное занятие 15.04-16.04. 2020
Выполнить задание до 22:00 16.04.2020


Продолжаем изучать цикл while. Для задач написать программу и нарисовать блок-схему.

Учителю отправить письмо . Тема письма - ДОТ2 информатика 8

либо
с программой, скриншотом программы и блок-схемой:
Имя программы - pas_while5_familia.pas
Имя скриншота с текстом и результатом программы - s_while5_familia.png


либо
с фотографиями программы и блок-схемой в тетради.

WHILE5

Вычислить сумму 10-ти четных чисел начиная с 14, используя цикл while (т.е. 14 + 16 + 18 ...  - всего 10 чисел).

Подсказка: для того, чтобы узнать, является ли число четным, надо узнать его остаток от деления на 2.

Подсказка2:

В while5 надо написать цикл. Требуется вспомогательная переменная, с помощью которой можно будет подсчитать сумму четных чисел (SUM). Изначально SUM = 0.

Начальное значение для переменной i должно быть равно 14. 

Далее начинается цикл (while (i < ?) do) //подобрать число, чтобы действительно складывалось ровно 10 четных чисел:
  в цикле проверяем, является ли текущее значение i - четным (if (i mod 2 = 0) then)
  если да, то увеличиваем значение переменной SUM - прибавляем к переменной суммы четное число (SUM := SUM + i)
  если нет, то ничего не делаем.
  Переходим к следующему значению i (i := i + 1)
На этом цикл заканчивается.

После цикла нужно вывести значение SUM.


*В данном случае SUM - накопляемая переменная. Изначально сумма равна 0, с каждым шагом цикла значение суммы увеличивается на четное число. Сумма накапливается.
**Есть второй способ, если придумать на какое число нужно каждый раз изменять Значение i , то можно обойтись без проверки на четность.

WHILE6

Вычислить произведение 5-ти нечетных чисел начиная с 7, используя цикл while (т.е. 7*9*... - всего 5 чисел).

Для желающих:

WHILE7

Ввести с клавиатуры 7 чисел. Сосчитать количество четных чисел  в последовательности.

Т.е. с клавиатуры вводится последовательность 3 7 5 4 9 10 24
В результате программа должна вывести: количество четных чисел = 3.

Подсказка:
внутри цикла while должна располагаться команда read(a), которая позволяет считать значение переменной с клавиатуры. Эта команда будет повторяться столько раз, сколько раз будет повторяться тело цикла. Пример, как это должно выглядеть:

...
while (условие) do
begin
  read(a);
  ... //необходимые действия для подсчета нечетного числа
end;

Если возникают вопросы или что-то не получается - пишите!

Разбор задач while2, while3, while4

WHILE2:

Задача while2 отличалась от задачи while1 только тем, что нужно было изменить порядок вывода чисел с 10 до 1. Для этого нужно было задать в качестве начального значения 10 и уменьшать значение переменной i на 1.


Алгоритм:
1. Объявить целочисленную вспомогательную переменную i, которая будет принимать значения от 10 до 1.
2. Определить начальное значение переменной i, равное 10.
3. До тех пор пока значение переменной i будет больше либо равно 1, выводить текущее значение i  и переходить к следующему (уменьшать значение переменно i на 1).

Программа на языке Pascal:

//Вывести числа от 10 до 1 через пробел
program while1;
var i:integer //целое число
begin
writeln('Вас приветствует программа Петрова П')
  i := 10;  //задать начальное значение переменной i
  while (i >= 1) do
  begin
      write (i, '   ');  //Вывод значений переменной i через пробелы
      i := i - 1;       //Уменьшение значения переменой i на 1
  end;
end.






WHILE3

Вычислить сумму и произведение чисел от 1 до 9.
В результате нужно получить значения выражений: 1+2+3+4+5+6+7+8+9 и 1*2*3*4*5*6*7*8*9

В данной задаче следовало создать две вспомогательные переменные: sum и proizv, а также переменную i, которая бы меняла свое значение от 1 до 9.

В цикле должны выполнятся следующие действия:
Переменная sum должна увеличиваться на значение i.
Переменная proizv должна умножаться на значение i.
Переменная i должна изменять свое значение на 1 для перехода к следующему числу.


Программа на языке Pascal:

//Вычислить сумму и произведение чисел от 1 до 9
program while3;
var i:integer //целое число
var sum, proizv:integer //вспомогательные переменные
begin
writeln('Вас приветствует программа Петрова П')
  i := 1;  //задать начальное значение переменной i
  sum := 0; //задать начальное значение sum. 0 не влияет на сумму
  proizv := 1; //задать начальное значение proizv. 1 не влияет на произведение
  while (i <= 9) do
  begin
     sum := sum + i; // Переменная sum увеличивается на значение i.
     proizv := proizv * i; // Переменная proizv умножается на значение i.
     i := i + 1;       //Увеличение значения переменой i на 1
  end;
  writeln ('1+2+3+4+5+6+7+8+9=', sum); //Вывод результата - значение переменной sum
  writeln ('1*2*3*4*5*6*7*8*9=', proizv); //Вывод результата - значение переменной proizv
end.



WHILE4
Дано целое число A. Если оно является степенью числа 4, то вывести "yes", иначе вывести "no".

В данном случае надо выяснить будет ли число делится на 4 без остатка до тех пор, пока не дойдем до 1.

То есть нам нужно взять число а, проверить остаток от деления на 4. Если остаток 0, то мы с помощью целочисленного деления div делим число на 4.

Почему нельзя использовать деление "/". дело в том, что при таком делении тип переменной а должен быть real, а значит мы не сможем проверять остаток от деления.


Программа на языке Pascal:

//Дано целое число A. Если оно является степенью числа 4, то вывести "yes", иначе вывести "no".
program while4;
var a:integer //целое число
begin
writeln('Вас приветствует программа Петрова П')
read (a); //считываем значение переменной а с клавиатуры
while (a mod 4 = 0) do //Пока остаток при делении a на 4 равен 0
   a:=a div 4; //Разделить a нацело на 4
if (a = 1) then write ('yes') //вывести yes, если дошли до 1
else write ('no'); //вывести no
end.

среда, 8 апреля 2020 г.

Программирование циклов с заданным условием.

Дата дистанционного занятия: 08.04.2020

Задание необходимо сделать и прислать учителю до 23:00 09.04.2020


СИНТАКСИС (СПРАВКА ПО ПАСКАЛЮ, ЦИКЛ С УСЛОВИЕМ)

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

Команды, которые повторяются называются телом цикла. Однократное повторение тела цикла называется итерацией цикла.

Оператор цикла while имеет следующую форму:

while условие do
  оператор
Условие представляет собой выражение логического типа, а оператор после do называется телом цикла. Перед каждой итерацией цикла условие вычисляется, и если оно истинно, то выполняется тело цикла, в противном случае происходит выход из цикла.
Если вместо одного оператора в теле цикла требуется выполнить несколько операторов, то используется блок команд begin...end.
Если условие всегда оказывается истинным, то может произойти зацикливание:
while 2>1 do
    write(1);

Чтобы прервать зациклившуюся программу, выполняющуюся из интегрированной среды в режиме связи с оболочкой, следует использовать комбинацию клавиш Ctrl-F2 или пункт меню Программа/Завершить
Изменение логического условия  внутри цикла должен обеспечить программист!

Пример:

Вывести числа от 1 до 10 через пробел.

Задача состоит в том, что нужно вывести числа от 1 до 10 через пробел. 
То есть мы хотим получить следующую строчку:
1 2 3 4 5 6 7 8 9 10

Для выполнения таких задач мы можем 10 раз написать одну и ту же команду с разными значениями, а можем сократить программу и написать с программу с помощью цикла.

В данном случае мы создаем переменную, которая будет поочередно принимать все значения от 1 до 10.
Для этого мы сначала присваиваем этой переменной начальное значение 1, а после увеличиваем перед каждым повтором на 1. 
Чтобы было выведено 10 чисел от 1 до 10 нам нужно повторять такие действия 10 раз, или до тех пор? пока значение переменной i не станет больше 10.

Таким образом у нас получается следующий алгоритм:
1. Присвоить i значение 1.
2. До тех пор, пока i меньше или равно 10, выводим значение i на экран (команда write) и увеличиваем значение i на 1 (i := i+1).

Алгоритм:
1. Объявить целочисленную вспомогательную переменную i, которая будет принимать значения от 1 до 10.
2. Определить начальное значение переменной i, равное 1.
3. До тех пор пока значение переменной i будет меньше либо равно 10, выводить текущее значение i  и переходить к следующему (увеличивать значение переменно i на 1).

Программа на языке Pascal:


//Вывести числа от 1 до 10 через пробел
program while1;
var i:integer //целое число
begin
writeln('Вас приветствует программа Петрова П')
  i := 1;  //задать начальное значение переменной i
  while (i <= 10) do
  begin
      write (i, '   ');  //Вывод значений переменной i через пробелы
      i := i + 1;       //Увеличение значения переменой i на 1
  end;
end.









Переписать программу и перерисовать блок-схему к себе в тетрадь.  Набрать программу в среде pascalABC.NET (или в онлайн компиляторе www.ideone.com ). Сохранить программу под именем while1-familia.pas

Самостоятельная работа




среда, 11 марта 2020 г.

Разветвляющийся алгоритм

Дата проведения занятия 11.03.20
Проверка домашнего задания. На дом была задана задача 
If2. Дано целое число.
Если оно является положительным, то вычесть из него 8;
в противном случае прибавить к нему 6.
Вывести полученное число

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

Составить блок-схему, написать текст программы, отладить следующие программы
1. Запишите программу с первого урока.
2. If30. Дано целое число, лежащее в диапазоне 1–999. Вывести его строку-описание вида «четное двузначное число», «нечетное трехзначное число»

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

На следующий урок нет домашнего задания!