Информатика

Вспомогательные алгоритмы и функции

Домашнее задание от 27.04.2016: т. 1, стр. 287-288, №43-44 (используя вспомогательные алгоритмы)

#include <iostream>
using namespace std;

void input_matrica(int row_count,
                   int col_count,
                   double *A)
{
    for(int i=0;i<row_count;i++)
    for(int j=0;j<col_count;j++)
       cin>>A[i*col_count+j];
}

void output_matrica(int row_count,
                   int col_count,
                   double *A)
{
    for(int i=0;i<row_count;i++)
    {
       for(int j=0;j<col_count;j++)
           cout<<A[i*col_count+j]<<" ";
       cout<<endl;
    }
}

double minimum(int row_count,
               int col_count,double *A)
{
    double t=A[0];
    for(int i=0;i<row_count;i++)
    for(int j=0;j<col_count;j++)
        if (t>A[i*col_count+j])
            t=A[i*col_count+j];
    return t;
}

int main()
{
    int n,m;
    cin>>n>>m;
    double A[n][m];

    input_matrica(n,m,&A[0][0]);
    output_matrica(n,m,&A[0][0]);
    cout<<minimum(n,m,&A[0][0]);

    return 0;

}
Домашнее задание: т. 1, стр. 284, №15, 16, 17 (используя вспомогательные алгоритмы)

Поиск пути в лабиринте. Волновой алгоритм

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
  int n, m;
  cin >> n >> m;
  int A[n][m];
  for (int i=0; i<n; i++)
  for (int j=0; j<m; j++)
  {
     cin >> A[i][j];
  }

  int k = 2;
  do{
     for (int i=0; i<n; i++)
     for (int j=0; j<m; j++)
     {
        if (A[i][j]==k)
        {
           if (A[i+1][j]==0) A[i+1][j]=k+1;
           if (A[i-1][j]==0) A[i-1][j]=k+1;
           if (A[i][j+1]==0) A[i][j+1]=k+1;
           if (A[i][j-1]==0) A[i][j-1]=k+1;
        }
      }   
      k++;
   }while(A[n-1][m-1]==0 && k<=n*m);
   if (A[n-1][m-1]==0) 
   {
     cout << "No solution";
   }
   else 
   {
      cout<<k<<endl;
      for (int i=0; i<n; i++)
      {
        for (int j=0; j<m; j++)
        {
          cout << A[i][j] << " ";
        }
        cout << endl; 
      }
    }
    return 0;
}
Домашнее задание: 
1. организовать ввод из файла:

ifstream cin;
cin.open("input.txt");
cin>>n;
cin.close();

2. вставить проверку на выход за границы,
3. вывести путь из лабиринта в формате - номер строки, номер столбца.

Алгоритмы сортировки
  1. Сортировка пузырьком (обменом)
  2. Сортировка перемешиванием
  3. Гномья сортировка
  4. Челночная сортировка
  5. Сортировка вставками
  6. Сортировка вставками со сторожевым элементом
  7. Сортировка слиянием
  8. Сортировка с помощью двоичного дерева
  9. Сортировка TimSort
  10. Сортировка подсчетом
  11. Блочная сортировка
  12. Сортировка выбором
  13. Сортировка Шелла
  14. Сортировка расческой
  15. Пирамидальная сортировка
  16. Плавная сортировка
  17. Быстрая сортировка Хоара
  18. Интроспективная сортировка
  19. Терпеливая сортировка
  20. Stooge sort - рекурсивная сортировка
  21. Корзинная сортировка
  22. Лексикографическая (поразрядная) сортировка
http://algolist.manual.ru/sort/
https://drive.google.com/open?id=0Byq7Oo4PTjwPcUgzQmFvcDU0dWM 
Алгоритмы с  целыми числами
  1. Получить все цифры натурального числа, вывести их в обратном порядке, подсчитать количество четных/нечетных, сумму и произведение этих цифр.
  2. Перевести натуральное десятичное число в Р-ичную систему счисления и обратно (2<=Р<=16)
  3. Определить число n на простоту (проверить делимость до sqrt(n)). Вывести все простые делители числа n. Алгоритм решето Эратосфена для определения всех простых чисел от 2 до N.
  4. Определение НОД(а,в) и НОК(а,в) = а*в / НОД(а,в), используя алгоритм Евклида.
  5. Решить линейные уравнения a*x=b; a*x+b*y=c в целых числах.
  6. Вычислить n!, n в степени k, число сочетаний C(n, k)=n!/(k!*(n-k)!)
https://drive.google.com/open?id=0Byq7Oo4PTjwPUHNSYkQ1TUVBZ1k

Тема "Исполнители алгоритмов"


Домашнее задание от 17.02.2016
1) алгоритмы с Роботом выполнить в Кумире и прислать два файла: с программой и стартовой обстановкой.
2) программу выполнить на С++.

Тема "Управление и алгоритмы"

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

Тема "Электронные таблицы"

Домашнее задание от 03.02.2016
1) Зарегистрироваться на сайте http://inf.sdamgia.ru 
Выполнить контрольную работу по ссылке http://inf.sdamgia.ru/test?id=671671 
Выполненные задания в файле отправить по почте или прикрепить на странице. 
Задание 20.2 выполнить на С++

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

  1. Задачник Семакина т. 1 стр. 59-60 № 39-44 выполнить в тетради, используя логические выражения и формулы преобразование. 
  2. Выучить таблицу истинности для логических операций НЕ, И, ИЛИ, импликация, эквиваленция, исключающее ИЛИ (XOR) и формулы преобразования.


20.01.2016 
Домашнее задание:
Задачник Семакина т. 1 стр. 56-58 № 31-37 выполнить в электронной таблице.

Выполните практическую работу в электронной таблице:
1. Получить таблицу Пифагора для двузначных чисел (используя относительную и абсолютную ссылку)
2. Вывести таблицу истинности для логических операций: OR, XOR, AND, NOT, =>, <=>
3. Перевести десятичное число (с дробной частью) в двоичную систему счисления, например: 173,65 ->100111,100111

Тема "Проектирование многотабличной реляционной базы данных"
Примеры:
Домашнее задание: т.2 Задачника Семакина п.5.4.5 №55, 57 (ФТ), 56, 58 (ИТ) 

Тема "Условие выбора с помощью языка запросов SQL"
Команды SQL:
SELECT - выбрать записи
UPDATE - изменить записи
INSERT - вставить записи
DELETE - удалить записи

Ключевые слова:
FROM Таблица - из таблицы
WHERE логическое выражение - где выполняются условия
GROUP BY группируемое поле
ORDER BY сортируемое поле
ASC - по возрастанию
DESC - по убыванию
BETWEEN 4 AND 5 - между 4 и 5
LIKE - близкое к введенной строке, не обязательно точное совпадение
SET Поле=Значение - установить для поля новое значение
INTO Таблица - вставить в таблицу
VALUES (значения полей) -  указать значения полей для вставки

Примеры использования:
Пусть дана Таблица1 с полями: Код, Фамилия, Имя, Пол, Дата_рождения, Класс, Математика, Литература, Русский, Химия, История, Физика, ОБЖ. Тогда можно сформировать следующие команды на языке SQL:

1) выбрать всех учеников 10 класса мужского пола
SELECT Фамилия, Имя, Пол, Класс FROM Таблица1 WHERE Класс=10 and Пол='м' ORDER BY Фамилия, Имя

2) выбрать всех отличников по математике или литературе
SELECT Фамилия, Имя, Математика, Литература FROM Таблица1 WHERE (Математика BETWEEN 4 AND 5) OR (Литература BETWEEN 4 AND 5)

3) вывести всех учеников, средний балл которых по всем предметам меньше 4
SELECT Фамилия, Имя, Математика, Литература, Русский, Химия, История, Физика, ОБЖ FROM Таблица1 WHERE (Математика+Литература+Русский+Химия+История+Физика+ОБЖ)/7 < 4

4) определить всех именинников 1995 года, рожденных в ноябре
SELECT Фамилия, Имя, Дата_рождения FROM Таблица1
WHERE Дата_рождения BETWEEN #01.11.1995# AND #30.11.1995#

5) вывести все Фамилии, которые содержат символ Й
SELECT Фамилия FROM Таблица1WHERE INSTR(Фамилия,'Й')>0

6) перевести всех учеников 10 класса в 11 класс
UPDATE Таблица1 SET Класс = 11 WHERE Класс = 10

7) удалить всех учеников 11 класса
DELETE FROM Таблица1 WHERE Класс = 11

8) добавить нового ученика в 10 класс
INSERT INTO Таблица1 (Фамилия, Имя, Класс, Пол) VALUES ('Иванов','Иван',10,'ж')

9) Если таблиц несколько, то при обращении к полям указывают имя таблицы, разделенной точкой. Пусть в базе данных есть еще одна Таблица2 с информацией о родителях ученика: Код, Номер_ученика, ФИО_родителя1, Место_работы1, Должность1, Рабочий_телефон1, ФИО_родителя2, Место_работы2, Должность2, Рабочий_телефон2, Количество_детей.

В этом случае Код из Таблицы1 должен совпадать по значению с полем Номер_ученика (установить связь 1-∞). Тогда запрос на вывод данных о родителях можно записать так:

SELECTТаблица1.Фамилия, Таблица1.Имя, Таблица2.ФИО_родителя1, Таблица2.ФИО_родителя2
FROM Таблица1, Таблица2
WHERE Таблица1.Код=Таблица2.Номер_ученика

10) Кроме этого можно выполнять групповые операции и производить над числовыми значениями следующие операции: суммирование, среднее значение, наибольшее и наименьшее значение. Также можно подсчитать количество записей в группе. Группировать можно по совпадающим значениям поля, например, по полю класс. Тогда по каждому классу можно подсчитать среднюю оценку, сумму, минимальную и максимальную оценку по какому-нибудь предмету, а также количество учеников в классе:

SELECT COUNT(Фамилия), AVG(Математик), SUM(Литература), MAX(Русский), MIN(Химия) FROM Таблица1 GROUP BY Класс

11) Параметризованный запрос позволяет ввести строку для поиска в диалоговом окне ввода. Для этого в условии отбора записывается сообщение в квадратных скобках, например:
[Введите день недели:]
После выполнения запроса вначале будет выведено диалоговое окно для ввода строки для поиска, и только после этого будет выполнен поиск.

Домашнее задание от 03.12.15: т.2 Задачника Семакина п.5.4.3 стр. 98-10 №22-38 (решение оформить в текстовом документе в виде запросов)

Тема "Проектирование и нормализация БД"
Многотабличная БД, отношения между таблицами БД, нормализация БД.
Домашнее задание от 25.11.15: 
Разобрать примеры 1-3 в п.5.4.5, стр 110-116
ИТ - т.2 Задачника Семакина п.5.4.5 разобрать примеры 1-3, №52,54,56,58 (решение оформить в текстовом документе)
ФТ - т.2 Задачника Семакина п.5.4.5 разобрать примеры 1-3, №51,53,55,57 (решение оформить в текстовом документе)

Тема "Базы данных"
Основные понятия, работа в СУБД, основные типы данных, первичный ключ, создание структуры однотабличной БД, ввод данных и их редактирование БД.
Домашнее задание от 11.11.15: 
ИТ - Задачник Семакина т.2 стр. 86-89 №1,3,5,7,9 (решение оформить в текстовом документе)
ФТ - Задачник Семакина т.2 стр. 86-89 №2,4,6,8,10 (решение оформить в текстовом документе)

Тема "Информационное моделирование"
Домашнее задание: Создать веб-сайт по теме "Информационное моделирование", используя сайты Google (https://sites.google.com/). На сайте должны быть освещены следующие моменты:
  1. название модели в заголовке сайта
  2. тип модели с примерами
  3. описание объекта: характеристики, свойства, необходимые для построения модели
  4. способ построения модели и этапы моделирования
  5. сама модель
  6. ссылки на используемые источники
  7. страница об авторе (о себе)
Можно воспользоваться материалами о построении моделей здесь:


Тема "Создание веб-страниц"
Презентация
Домашнее задание: выполнить задание 1-4 из презентации. Для каждого задания создать отдельную папку, заархивировать и отправить по почте.

Тема "Поиск информации в Интернете"

Правила составления поисковых запросов


“ ”
«рассказы Чехова»
Поиск буквальной фразы
!
!день
Поиск точной формы слова
+
+Архиерей
Обязательное наличие слова
-
-чиновник
Исключение документов, содержащих слово
&
Пьеса&Чехов
Обязательное включение нескольких объектов в предложении
&&
Анализ&&пьеса
Обязательное включение нескольких объектов в документе
~
Чехов~Гоголь
Что искать ~ что исключить
(на уровне предложения)
~~
Чехов~~Куприн
Что искать ~ что исключить
(на уровне документа)
|
Чехов|Тургенев
Задание вариантов (первое или второе)
()
+(рассказы | пьесы)
Группировка объектов в новый объект
 
Домашнее задание: Создать коллекцию ссылок (от 3 до 10 с подробным описанием) по темам:


  1. Открытые электронные библиотеки
  2. Сайты, посвященные описанию фильмов
  3. Сайты, посвященные литературоведческой литературе
  4. Сайты, посвященные классической музыке с архивами в формате mp3
  5. Сайты, посвященные творчеству одного писателя
  6. Книжные магазины
  7. Сайты, посвященные поддержке языков программирования
  8. Сайты, посвященные графическим редакторам
  9. Интернет-магазины компьютерной техники
  10. Сайты, посвященные компьютерному программному обеспечению
  11. Сайты, посвященные компьютерному и аппаратному обеспечению
  12. Сайты, посвященные животным и охране природы
  13. Сайты, посвященные указам и законам
  14. Сайты, посвященные поиску и продаже недвижимости
  15. Сайты, посвященные истории России
  16. Сайты, посвященные изучению русского языка для иностранцев

Тема "Скорость передачи данных"
Домашнее задание: Фотографию размером 5х6 дюймов сканировали с разрешением 300 dpi в цветовом режиме RGB и отправили по сети со скоростью 100 Мбит/с.
За какое время файл будет передан?

Тема "Компьютерные сети"
Домашнее задание:
Подготовить доклад по теме "Компьютерные сети. Аппаратное и программное обеспечение. Основные понятия, протоколы". (см. Глава 1. Передача информации в компьютерных сетях)

Моделирование физических процессов на С++ (ФТ)

Требование к проекту

  1. ввод данных, от которых зависит моделирование физического процесса, например, масса, скорость, коэффициент трения, размеры материального объекта и и т.д.
  2. в зависимости от введенных данных смоделировать "реальное" поведение объекта, например, при уменьшении скорости объект движется медленнее
  3. использовать функции для рисования, движения объекта и т.д.
  4. применять цветное изображение
  5. остановка движения настроить по клавише с помощью функции getch()

Список проектных работ
  1. Авдеенко Владислав - изображение электрических полей
  2. Бородич Михаил - колебание маятника
  3. Волков Александр - движение тела на плоскости под углом к горизонту
  4. Коновалов Сергей - свободное падение тела (парашютиста)
  5. Маркина Екатерина - движение жидкости
  6. Мирошин Владимир - распространение тепла в стержне
  7. Протасов Даниил - движение заряженных частиц
  8. Сапегин Арсений - колебание затухающего маятника
  9. Ткачик Артем - движение тела с учетом сопротивления окружающей среды
  10. Цимбалист Егор - движение небесных тел
  11. Шабалина Ольга - распространение тепла в воздухе (горение свечи)
  12. Шевцов Николай - взлет ракеты

Анимация объектов

#include <iostream>
#include <graphics.h>
using namespace std;
int main()
{
     int gdriver = DETECT, gmode, errorcode;
     initgraph(&gdriver,&gmode,"");

// рисуем объект, который будет двигаться

     setfillstyle(1,BLUE);
     setcolor(RED);
     circle(50,50,50);
     floodfill(50,50,RED);

     void *ps;//объявляем переменную указатель
     int size=imagesize(0, 0, 100, 100); // определяем размер объекта
     ps = new char[size];  // выделяем память под спрайт и запоминаем адрес в переменную-указатель ps
     getimage (0, 0, 100, 100, ps);//сохраняем в память нарисованный объект
     
     cleardevice();//очищаем

     //рисуем фон

     for(int x=0;x<500;x+=10)
     {
        putimage (x, 100, ps, XOR_PUT);//нарисовать поверх фона
        Sleep(100);//пауза до 100 миллисекунд
        putimage (x, 100, ps, XOR_PUT);//"стираем" объект
     }

     getch();//пауза до нажатия клавиши Enter
     delete ps;//освобождаем память
     closegraph();//закрываем графический режим
     return 0;

}
Домашнее задание от 11.01.2016: выполните одно из заданий:
  1. Нарисуйте солнышко и переместите его слева направо (или спрячьте за тучу) 
  2. Нарисуйте падающие звезды. 
  3. Изобразите падающий с неба снег (дождь в виде прямых линий). 
  4. Изобразите движение автомобиля (или несколько автомобилей) по дороге. 
  5. Придумайте свой сценарий и движущийся объект

Построение объектов относительно якорной точки

#include <graphics.h>

using namespace std;

void draw_elka(int x0, int y0)
  {
     setcolor(WHITE);
     for(int i=0;i<3;i++)
     {
        line(x0-10*(i+1),y0,x0+10*(i+1),y0);
        line(x0+10*(i+1),y0,x0,y0-10);
        line(x0,y0-10,x0-10*(i+1),y0);
        y0=y0+11;
     }
  }
  
int main()
{

//---------- Инициализация графики ----------//
  int gdriver = DETECT, gmode, errorcode;
  initgraph(&gdriver,&gmode,"");
//------------------------------------------//

  draw_elka(100,100);
  draw_elka(200,300);
  draw_elka(250,250);

//---------- Закрытие графики ----------//
  getch();
  closegraph();
return 0;

}
Домашнее задание от 14.12.2015: написать 3-5 функций для построения фигур относительно якорной точки (х0, у0) и в main вызвать их несколько раз (3-5).
Построение графика функции по точкам

#include <iostream>
#include <graphics.h>
using namespace std;
int main()
{
int n;
cin>>n;
double X[n], Y[n];
for(int i=0;i<n;i++)
{
  cin>>X[i]>>Y[i];
}

double a=X[0],b=X[0],ymax=Y[0],ymin=Y[0];
for(int i=0;i<n;i++)
{
  if(Y[i]>ymax)ymax=Y[i];
  if(Y[i]<ymin)ymin=Y[i];
  if(X[i]>b)b=X[i];
  if(X[i]<a)a=X[i];
}
double mx, my, sx, sy;
int pa=0, pb=640, pc=0, pd=480;
my=(pc-pd)/(ymax-ymin);
sy=pc-ymax*my;

mx=(pb-pa)/(b-a);
sx=pa-a*mx;

//---------- Инициализация графики ----------//
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver,&gmode,"");
//------------------------------------------//

setcolor(WHITE);
setlinestyle(0,0,3);
int T[n][2];//массив из n точек для хранения координат
for (int i=0; i<n; i++)
{
  T[i][0]=X[i]*mx+sx;
  T[i][1]=Y[i]*my+sy;
}
drawpoly(n,&T[0][0]);

//---------- Закрытие графики ----------//
getch();
closegraph();
return 0;
}

Домашнее задание от 30.11.2015: используя примеры параметрических функций (ссылка), задайте массив точек X, Y и, используя приведенную программу, нарисуйте её.

Домашнее задание от 16.11.2015: выполнить на странице Задание 2
  1. Нарисуйте оси Ох и Оу с учетом заданного отрезка.
  2. Расставьте шкалу деления по осям Ох и Оу с заданным интервалом dxdy.
  3. Нарисуйте линии сетки по шкале деления другим цветом или другим типом линии.
  4. Подпишите оси и шкалу деления.
  5. Выведите название функции в заголовок.
  6. Нарисуйте несколько графиков функции на одном отрезке по оси Ох.

//функция с возвращаемым значением
int x(int x0, int r, int n, int k)
{
  return int(x0+r*cos(2*3.1415/n*k));
}
int y(int y0, int r, int n, int k)
{
  return int(y0+r*sin(2*3.1415/n*k));
}
//функция без возвращаемого значения или процедура
void nygolnik(int c, int x0, int y0, int r, int n)
{
   int T[n][2];//массив точек n-угольника
   for (int i=0; i<n; i++)
   {
       T[i][0]=x(x0,r,n,i);
       T[i][1]=y(y0,r,n,i);
   }
   setcolor(c);
   setfillstyle(1,c);
   fillpoly(n,&T[0][0]);

}
//вызов процедуры рисования n-угольников
    nygolnik(6,100,100,50,6);
    nygolnik(7,200,200,50,3);
    nygolnik(12,300,300,50,4);

Домашнее задание от 21.09.15: написать программу рисования пятиугольной звезды.

Домашнее задание от 7.09.15: выполнить Задание 1 на блоге "Компьютерная графика в С++"

Алгоритмы и исполнители (ИТ)

Волновой алгоритм поиска пути в лабиринте

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream in;
   /*
    int k=5;
    char str[15];
    itoa(k,str,10);//перевод числа в строку в системе счисления 10
    strcat(str,".txt");// str - имя файла
    */
    in.open("text.txt");//относительная ссылка
//   in.open("D:\\Work\\Task1\\text.txt");//абсолютная ссылка
    int P[4+2][5+2];
    for (int i=0; i<4+2; i++)
    for (int j=0; j<5+2; j++)
    {
        P[i][j]=1;
    }
    for (int i=1; i<=4; i++)
    for (int j=1; j<=5; j++)
    {
        in>>P[i][j];
    }
    in.close();
    for (int i=1; i<=4; i++)
    {
        for (int j=1; j<=5; j++)
        {
            cout<<P[i][j];
        }
        cout<<endl;
    }
    int p=2;
    P[1][1]=p;
    do{
    p=p+1;
    for (int i=1; i<=4; i++)
    {
        for (int j=1; j<=5; j++)
        {
            if (P[i][j]==p-1)
            {
                if(P[i][j+1]==0)P[i][j+1]=p;
                if(P[i][j-1]==0)P[i][j-1]=p;
                if(P[i+1][j]==0)P[i+1][j]=p;
                if(P[i-1][j]==0)P[i-1][j]=p;
            }
        }
    }
    }while(P[0+1][2+1]==0 && p<=4*5);
    if (P[0+1][2+1]==0) {cout<<"No solution";return 0;}
    cout<<"Hod="<<P[0+1][2+1]-1;
    return 0;
}
Домашнее задание от 05.04.16: ввести размер поля в самом файле и найти путь выхода из лабиринта с указанием координат (индекса) по строкам и столбцам.

Требования к игровому проекту
  1. создание алгоритма для второго игрока "компьютера" или случайное поведение
  2. использование функций для движения, рисования объекта и т.д.
  3. использование клавиш для управления объектом игрока, используя функцию getch()
  4. ввод первоначальных настроек игры в переменные, например, количество препятствий, размер игрового поля, количество жизней и т.д.
  5. вывод сообщения о победе или проигрыше игры. 
Список проектных работ
  1. Бощенко Екатерина - лабиринт
  2. Глебова Вера - кролик и морковка
  3. Гусев Данила - самолетик
  4. Ефремов Артур - космический корабль
  5. Лепенина Анастасия - пакмен
  6. Ляхова Софья - змейка
  7. Марухин Андрей - лягушка путешественница
  8. Мельников Денис - 
  9. Рыльцев Максим - морской бой
  10. Сироткин Савелий - тетрис
  11. Федосеев Владимир - шахматы
  12. Цибизова Валерия - формула-1
  13. Яницкий Борис - теннис

23.09.2015 Рекурсивные процедуры
использовать Черепаха
цел глубина_рекурсии | глобальная переменная 
алг
нач
глубина_рекурсии:=0
Прямоугольник(200)
кон
| рекурсивный алгоритм
алг Прямоугольник(цел сторона) | локальная переменная
нач
| условие останова
если сторона<=0
то
вывод глубина_рекурсии
выход
все
опустить хвост
нц 4 раз
вперед(сторона)
вправо(90)
кц
поднять хвост
вперед(10)
вправо(90)
вперед(10)
влево(90)
глубина_рекурсии:=глубина_рекурсии+1
Прямоугольник(сторона-20)
кон

Домашнее задание: написать алгоритм рисования снежинки с помощью рекурсивного алгоритма

Исполнитель Черепаха

Домашнее задание от 9.09.15: 
  1. написать алгоритм рисования цветка с помощью вспомогательного алгоритма
  2. написать алгоритм рисования животного с помощью треугольников, оформить через вспомогательные алгоритмы. 

Комментариев нет :

Отправить комментарий