<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%B7%D0%B0%D0%BD%D1%8F%D1%82%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%BA%D1%83%D1%80%D1%81%D1%83_%D0%9E%D0%B8%D0%9C%D0%9F%2F%D0%93%D1%80%D1%83%D0%BF%D0%BF%D0%B0_101_1</id>
	<title>Практические занятия по курсу ОиМП/Группа 101 1 - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%B7%D0%B0%D0%BD%D1%8F%D1%82%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%BA%D1%83%D1%80%D1%81%D1%83_%D0%9E%D0%B8%D0%9C%D0%9F%2F%D0%93%D1%80%D1%83%D0%BF%D0%BF%D0%B0_101_1"/>
	<link rel="alternate" type="text/html" href="https://wikicshse.ru/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%B7%D0%B0%D0%BD%D1%8F%D1%82%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%BA%D1%83%D1%80%D1%81%D1%83_%D0%9E%D0%B8%D0%9C%D0%9F/%D0%93%D1%80%D1%83%D0%BF%D0%BF%D0%B0_101_1&amp;action=history"/>
	<updated>2026-06-06T16:02:26Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wikicshse.ru/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%B7%D0%B0%D0%BD%D1%8F%D1%82%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%BA%D1%83%D1%80%D1%81%D1%83_%D0%9E%D0%B8%D0%9C%D0%9F/%D0%93%D1%80%D1%83%D0%BF%D0%BF%D0%B0_101_1&amp;diff=1965&amp;oldid=prev</id>
		<title>imported&gt;Melnichuk: /* Оценки */</title>
		<link rel="alternate" type="text/html" href="https://wikicshse.ru/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%B7%D0%B0%D0%BD%D1%8F%D1%82%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%BA%D1%83%D1%80%D1%81%D1%83_%D0%9E%D0%B8%D0%9C%D0%9F/%D0%93%D1%80%D1%83%D0%BF%D0%BF%D0%B0_101_1&amp;diff=1965&amp;oldid=prev"/>
		<updated>2014-12-27T11:49:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Оценки&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=== Консольные команды Linux ===&lt;br /&gt;
* man &amp;lt;cmd&amp;gt; вывести помощь по команде (выход из помощи - :q)&lt;br /&gt;
* python3 &amp;lt;file&amp;gt; запустить скрипт на языке python3&lt;br /&gt;
* ls выводит содержимое текущей директории&lt;br /&gt;
* cd &amp;lt;path&amp;gt; переходит в указанную директорию&lt;br /&gt;
* mkdir &amp;lt;dirname&amp;gt; создает директорию&lt;br /&gt;
* mv &amp;lt;old_name&amp;gt; &amp;lt;new_name&amp;gt; переместить или просто переименовать файл&lt;br /&gt;
* rm &amp;lt;file&amp;gt; удаляет файл&lt;br /&gt;
* less &amp;lt;file&amp;gt; открыть просмотр файла в less (выход - :q)&lt;br /&gt;
* touch &amp;lt;file&amp;gt; создать пустой файл&lt;br /&gt;
* echo &amp;lt;str&amp;gt; вывести строку&lt;br /&gt;
* cat &amp;lt;file&amp;gt; вывести содержимое файла&lt;br /&gt;
* head &amp;lt;file&amp;gt; вывести начало файла&lt;br /&gt;
* tail &amp;lt;file&amp;gt; вывести конец файла&lt;br /&gt;
&lt;br /&gt;
=== Немного о файловой системе ===&lt;br /&gt;
* &amp;quot;~&amp;quot; - ваша домашняя директория&lt;br /&gt;
* &amp;quot;.&amp;quot; - текущая директория&lt;br /&gt;
* &amp;quot;..&amp;quot; - родительская директория&lt;br /&gt;
* &amp;quot;/&amp;quot; - корень диска&lt;br /&gt;
Таким образом, &amp;quot;~/./any_dir/../&amp;quot; --- это то же самое, что и &amp;quot;~/any_dir/..&amp;quot;, и &amp;quot;~/&amp;quot;, и &amp;quot;~&amp;quot;, &amp;quot;/home/guest-.../&amp;quot;, и &amp;quot;~/../guest-...&amp;quot;. Здесь &amp;quot;...&amp;quot; обозначают какую-то строку, которая может меняться в силу текущих настроек Linux.&lt;br /&gt;
&lt;br /&gt;
=== Перенаправление потоков ===&lt;br /&gt;
Каждая команда в Linux принимает поток stdin и генерирует два потока - поток вывода stdout и поток ошибок stderr.&amp;lt;br&amp;gt;&lt;br /&gt;
Для перенаправления этих потоков служат символы &amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;gt;&amp;quot;, &amp;quot;&amp;gt;&amp;gt;&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Например, команда &amp;quot;python3 script.py &amp;gt; output.txt&amp;quot; перенаправит stdout вашего скрипта в файл output.txt.&amp;lt;br&amp;gt;&lt;br /&gt;
А команда &amp;quot;python3 script.py &amp;lt; input.txt&amp;quot; направит в ваше решение содержимое файла input.txt.&amp;lt;br&amp;gt;&lt;br /&gt;
Конечно же, их можно комбинировать.&lt;br /&gt;
Важно заметить, что при использовании &amp;quot;&amp;gt;&amp;quot; уже имеющийся output.txt будет удален и появится новый output.txt.&amp;lt;br&amp;gt;&lt;br /&gt;
Если вы хотите просто дописать строки в конец имеющегося файла, используйте &amp;quot;&amp;gt;&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Конвейеры Linux ===&lt;br /&gt;
Один из наиболее мощных инструментов в консоли. Позволяет направить stdout предыдущей команды в stdin следующей. Пример:&amp;lt;br&amp;gt;&lt;br /&gt;
cat sample.txt | grep -v &amp;quot;Test&amp;quot; | python3 solve.py &amp;gt;&amp;gt; result.txt&amp;lt;br&amp;gt;&lt;br /&gt;
Здесь из файла sample.txt будут выброшены все строки, содержащие слово Test, а остальные будут направлены в ваш скрипт, после чего его результат допишется в конец файла result.txt. &lt;br /&gt;
&lt;br /&gt;
Теперь приведу пример цикла:&amp;lt;br&amp;gt;&lt;br /&gt;
for i in {1..10}; do echo $i | python3 solve.py; done&amp;lt;br&amp;gt;&lt;br /&gt;
Этот цикл запустит ваше решение на всех числах от 1 до 10.&lt;br /&gt;
&lt;br /&gt;
=== Пробный контест по вводу-выводу ===&lt;br /&gt;
http://official.contest.yandex.ru/contest/654/&amp;lt;br&amp;gt;&lt;br /&gt;
Группы задач:&amp;lt;br&amp;gt;&lt;br /&gt;
* 0 (Hello, world!)&lt;br /&gt;
* 1-6 (простые арифметические вычисления)&lt;br /&gt;
* 7-12 (условный оператор)&lt;br /&gt;
* 13-17 (циклы и делимость 1)&lt;br /&gt;
* 18-24 (циклы и делимость 2)&lt;br /&gt;
* 25-30 (системы счисления)&lt;br /&gt;
* 31-35 (прочее по циклам)&lt;br /&gt;
* 36-41 (форматированный вывод)&lt;br /&gt;
Из каждой группы надо решить по две задачи, а нулевую задачу нужно решить всем.&lt;br /&gt;
&lt;br /&gt;
=== Контест по геометрии ===&lt;br /&gt;
Цель контеста --- знакомство с типами и перегрузкой операторов в Python.&amp;lt;br&amp;gt;&lt;br /&gt;
http://official.contest.yandex.ru/contest/664/&amp;lt;br&amp;gt;&lt;br /&gt;
Необходимо сдать хотя бы две задачи.&lt;br /&gt;
&lt;br /&gt;
=== Контест по наследованию ===&lt;br /&gt;
Простейшие задачи на наследование в Python3.&amp;lt;br&amp;gt;&lt;br /&gt;
Цель здесь --- это не решить эти задачи, а попробовать реализовать наследование.&amp;lt;br&amp;gt;&lt;br /&gt;
http://official.contest.yandex.ru/contest/667/&amp;lt;br&amp;gt;&lt;br /&gt;
Необходимо сдать обе задачи.&lt;br /&gt;
&lt;br /&gt;
=== Контест по обработке текстов ===&lt;br /&gt;
Контест, связанный с лекционными материалами.&amp;lt;br&amp;gt;&lt;br /&gt;
http://official.contest.yandex.ru/contest/669/&amp;lt;br&amp;gt;&lt;br /&gt;
Группы задач:&amp;lt;br&amp;gt;&lt;br /&gt;
* 0-8&lt;br /&gt;
* 9-14&lt;br /&gt;
Из каждой группы необходимо решить по две задачи.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Обратите внимание, что в этом контесте работает проверка PEP8!&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Множественное наследование и генераторы ===&lt;br /&gt;
http://official.contest.yandex.ru/contest/675/&amp;lt;br&amp;gt;&lt;br /&gt;
Всем нужно сдать задачу номер 0, а также любые другие две задачи.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Также советую еще раз попробовать осознать, что происходит вот в этом фрагменте кода:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line start=&amp;quot;1&amp;quot; highlight=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
  class MyType(type):&lt;br /&gt;
           def __new__(cls, name, bases, dict):&lt;br /&gt;
                   print(&amp;quot;New instance of %s created with name %s, bases %s and params %s&amp;quot;                 &lt;br /&gt;
                           % (cls.__name__, name, str(bases), str(dict)))&lt;br /&gt;
                   return type.__new__(cls, name, bases, dict)&lt;br /&gt;
           def __init__(cls, name, bases, dict):&lt;br /&gt;
                   print(&amp;quot;Instance of %s with name %s and bases %s initialized with params %s&amp;quot;                           &lt;br /&gt;
                           % (cls.__name__, name, str(bases), str(dict)))&lt;br /&gt;
                   return super(MyType, cls).__init__(name, bases, dict)&lt;br /&gt;
  &lt;br /&gt;
  MyObject = MyType(&amp;quot;MyObject&amp;quot;, (), {})&lt;br /&gt;
  &lt;br /&gt;
  class MyClass(MyObject):&lt;br /&gt;
          def __init__(self, s):&lt;br /&gt;
                  print(s)&lt;br /&gt;
  &lt;br /&gt;
  mc = MyClass(&amp;quot;parameter&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вкратце, примерно следующее: мы объясняем Python3, что у нас будет новый тип классов --- MyType.&amp;lt;br&amp;gt;&lt;br /&gt;
Создаем аналог object для этого типа объектов. Именно от него мы будем наследовать все наши новые классы.&amp;lt;br&amp;gt;&lt;br /&gt;
Унаследуем от него новый класс MyClass.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вот что этот пример выводит:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line start=&amp;quot;1&amp;quot; highlight=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
  New instance of MyType created with name MyObject, bases () and params {}&lt;br /&gt;
  Instance of MyObject with name MyObject and bases () initialized with params {}&lt;br /&gt;
  New instance of MyType created with name MyClass, bases (&amp;lt;class &amp;#039;__main__.MyObject&amp;#039;&amp;gt;,) and params &lt;br /&gt;
  {&amp;#039;__init__&amp;#039;: &amp;lt;function MyClass.__init__ at 0x100771d08&amp;gt;, &amp;#039;__module__&amp;#039;: &amp;#039;__main__&amp;#039;, &amp;#039;__qualname__&amp;#039;: &amp;#039;MyClass&amp;#039;}&lt;br /&gt;
  Instance of MyClass with name MyClass and bases (&amp;lt;class &amp;#039;__main__.MyObject&amp;#039;&amp;gt;,) initialized with params &lt;br /&gt;
  {&amp;#039;__init__&amp;#039;: &amp;lt;function MyClass.__init__ at 0x100771d08&amp;gt;, &amp;#039;__module__&amp;#039;: &amp;#039;__main__&amp;#039;, &amp;#039;__qualname__&amp;#039;: &amp;#039;MyClass&amp;#039;}&lt;br /&gt;
  parameter&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Почему так?&amp;lt;br&amp;gt;&lt;br /&gt;
Вначале честно вызываются __new__ и __init__ при создании MyObject. Python смотрит вверх по дереву и ищет __new__ и __init__ от MyType и сразу же у него их и находит - выводит первые две строки и создает объект, как и написано в коде.&amp;lt;br&amp;gt;&lt;br /&gt;
Далее, при создании MyClass мы создаем новый объект, а потому вызываются метод __new__ и __init__ для того класса, которому он принадлежит - MyObject. И мы получаем вывод 4, 5, 6 и 7 строчек - Python дополняет список параметров и передает их в наши методы __new__ и __init__ объекта MyObject.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замыкание и декораторы ===&lt;br /&gt;
http://official.contest.yandex.ru/contest/687/&amp;lt;br&amp;gt;&lt;br /&gt;
Нужно решить обе приведенные задачи.&amp;lt;br&amp;gt;&lt;br /&gt;
Во второй задаче возможны проблемы с правильным ответом.&amp;lt;br&amp;gt;&lt;br /&gt;
Если вы по необъяснимым причинам получаете WA, просто попробуйте сдать еще раз.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Графика ===&lt;br /&gt;
Основным руководством для нас будет вот эта вики страничка&amp;lt;br&amp;gt;&lt;br /&gt;
http://ru.wikiversity.org/wiki/%CA%F3%F0%F1_%EF%EE_%E1%E8%E1%EB%E8%EE%F2%E5%EA%E5_Tkinter_%FF%E7%FB%EA%E0_Python&amp;lt;br&amp;gt;&lt;br /&gt;
Наша основная задача на сегодняшнее занятие - написать графическое-приложение калькулятор.&amp;lt;br&amp;gt;&lt;br /&gt;
Нужно это, чтобы познакомиться с графической библиотекой tkinter и основными ее методами.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что в зависимости от версии Python на вашем ноутбуке, вам нужно писать Tkinter вместо tkinter в названии модуля.&amp;lt;br&amp;gt;&lt;br /&gt;
Если пример не работает и python3 ругается на отсутствие библиотеки, просто измените регистр первой буквы в названии модуля, все должно заработать.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Начнем мы с самого простого приложения &amp;quot;Hello, world!&amp;quot;:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line start=&amp;quot;1&amp;quot; highlight=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
  from tkinter import *&lt;br /&gt;
  &lt;br /&gt;
  tk = Tk()&lt;br /&gt;
  &lt;br /&gt;
  entry = Entry(tk)&lt;br /&gt;
  entry.pack()&lt;br /&gt;
  entry.insert(0, &amp;quot;Hello, world!&amp;quot;)&lt;br /&gt;
  &lt;br /&gt;
  tk.mainloop()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Здесь в 3ей строке создается новое приложение, в 5ой - новое текстовое поле, в 6ой строке оно укладывается в окно, в 7ой изменяется его содержимое, а в 9ой мы запускаем цикл обработки событий окна.&amp;lt;br&amp;gt;&lt;br /&gt;
Entry - это виджет библиотеки tkinter, который позволяет отображать одну строку текста.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь давайте попробуем сделать кнопку в нашем приложении:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  1 from tkinter import *&lt;br /&gt;
  2 &lt;br /&gt;
  3 tk = Tk()&lt;br /&gt;
  4 &lt;br /&gt;
  5 button = Button(tk, text=&amp;quot;Hello, world!&amp;quot;)&lt;br /&gt;
  6 button.pack()&lt;br /&gt;
  7 &lt;br /&gt;
  8 tk.mainloop()&lt;br /&gt;
&lt;br /&gt;
Но пока эта кнопка ничего не делает. Давайте сделаем так, чтобы при нажатии на кнопку в консоль писалось бы &amp;quot;Hello, world!&amp;quot;. Для этого мы должны передать в конструктор кнопки функцию, которая будет вызвана при нажатии:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  5 def hello():&lt;br /&gt;
  6         print(&amp;quot;Hello!&amp;quot;)&lt;br /&gt;
  7 &lt;br /&gt;
  8 button = Button(tk, text=&amp;quot;Hello, world!&amp;quot;, command=hello)&lt;br /&gt;
&lt;br /&gt;
В конструкторе кнопки добавился аргумент command, который указывает Pythonу, какая функция будет реагировать на нажатие кнопки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь давайте поговорим о том, как размещаются элементы на экране.&amp;lt;br&amp;gt;&lt;br /&gt;
Pack - это очень простой упаковщик. Он может поместить виджет только в одно из крайних положений &amp;quot;top&amp;quot;, &amp;quot;bottom&amp;quot;, &amp;quot;left&amp;quot;, &amp;quot;right&amp;quot;. Делается это так:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  1 from tkinter import *&lt;br /&gt;
  2 &lt;br /&gt;
  3 tk = Tk()&lt;br /&gt;
  4 &lt;br /&gt;
  5 b1 = Button(tk, text=&amp;quot;Left&amp;quot;)&lt;br /&gt;
  6 b1.pack(side=&amp;quot;left&amp;quot;)&lt;br /&gt;
  7 &lt;br /&gt;
  8 b2 = Button(tk, text=&amp;quot;Right&amp;quot;)&lt;br /&gt;
  9 b2.pack(side=&amp;quot;right&amp;quot;)&lt;br /&gt;
 10 &lt;br /&gt;
 11 tk.mainloop()&lt;br /&gt;
&lt;br /&gt;
Это дает возможность размещать элементы в определенном порядке, но особой свободы не дает.&lt;br /&gt;
&lt;br /&gt;
Перейдем к упаковщику grid, который позволяет разбить окно на ячейки таблицы и размещать элементы в них. Простой пример:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  1 from tkinter import *&lt;br /&gt;
  2 &lt;br /&gt;
  3 tk = Tk()&lt;br /&gt;
  4 &lt;br /&gt;
  5 b1 = Button(tk, text=&amp;quot;Left top&amp;quot;)&lt;br /&gt;
  6 b1.grid(row=0, column=0)&lt;br /&gt;
  7 &lt;br /&gt;
  8 b2 = Button(tk, text=&amp;quot;Right bottom&amp;quot;)&lt;br /&gt;
  9 b2.grid(row=1, column=1)&lt;br /&gt;
 10 &lt;br /&gt;
 11 tk.mainloop()&lt;br /&gt;
&lt;br /&gt;
Это уже значительно более общий метод.&lt;br /&gt;
&lt;br /&gt;
Теперь вы знаете все необходимое для того, чтобы составить из кнопок простой калькулятор и добавить текстовое поле для вывода результата.&amp;lt;br&amp;gt;&lt;br /&gt;
Попробуйте, используя все ваши знания про Python, написать теперь простой калькулятор.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Удачи!&lt;br /&gt;
&lt;br /&gt;
=== Первое домашнее задание ===&lt;br /&gt;
Контест с задачами:&amp;lt;br&amp;gt;&lt;br /&gt;
http://official.contest.yandex.ru/contest/689/&amp;lt;br&amp;gt;&lt;br /&gt;
Распределение задач осуществляется по простому правилу:&amp;lt;br&amp;gt;&lt;br /&gt;
* всего есть пять типов задач;&lt;br /&gt;
* из каждого типа задач надо решить ровно одну задачу;&lt;br /&gt;
* номер задачи в группе определяется по какой-то букве:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 2 || 3 || 4&lt;br /&gt;
|-&lt;br /&gt;
| АДЗЛПУЧЫЯ || БЕИМРФШЬ || ВЁЙНСХЩЭ || ГЖКОТЦЪЮ&lt;br /&gt;
|}&lt;br /&gt;
* для первых трех групп задач эти буквы - это первые три буквы вашего полного имени;&lt;br /&gt;
* для последних двух групп задач эти буквы - это первые две буквы вашей фамилии.&lt;br /&gt;
&lt;br /&gt;
Таким образом я, Павел Мельничук, должен был бы решить задачи A1 (П), B1 (А), C3 (В), D2 (М) и E2 (Е).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Параллельные вычисления ===&lt;br /&gt;
Контеста в этот раз нет, поскольку Яндекс.Контест не поддерживает многопроцессорные приложения.&amp;lt;br&amp;gt;&lt;br /&gt;
Так что наша задача - научиться выполнять параллельные вычисления и решить с их помощью несколько задач, не сдавая их в тестирующую систему.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Ускорьте выполнение задачи про сумму k-ых степеней. Вход программы - числа k и n. Вывод - сумма k-ых степеней чисел от 0 до n - 1. Какой максимальный коэффициент ускорения вы смогли получить? Почему он именно такой?&lt;br /&gt;
# Посчитайте скалярное произведение двух векторов размерности n. Чтобы не тратиться время на их ввод из файла, генерируйте их в программе по какой-нибудь простой формуле. Например, a_i = 1 / i.&lt;br /&gt;
# Реализуйте обе предыдущие задачи, не компонуя ответ по результаты выполнения всех задач, а заполняя ответ из ветвей, используя локи.&lt;br /&gt;
&lt;br /&gt;
=== Введение в С++ ===&lt;br /&gt;
Ссылка на контест:&amp;lt;br&amp;gt;&lt;br /&gt;
http://official.contest.yandex.ru/contest/719/&amp;lt;br&amp;gt;&lt;br /&gt;
Задачки очень простые, поэтому решаем все, чтобы набить руку.&lt;br /&gt;
&lt;br /&gt;
Также предлагается следующая задача на подумать: дан массив из N элементов и число K. Нужно найти K минимальных чисел. С каким асимптотическим потреблением памяти и времени вы умеете решать эту задачу?&lt;br /&gt;
&lt;br /&gt;
Для тех, кто участвовал в четверть-финале прошлого года: дан массив из N элементов и числа L и R. Нужно найти число подотрезков этого массива, сумма которых лежит в отрезке от L до R.&lt;br /&gt;
&lt;br /&gt;
=== Функции в C++ ===&lt;br /&gt;
Ссылка на контест:&amp;lt;br&amp;gt;&lt;br /&gt;
http://official.contest.yandex.ru/contest/735/&amp;lt;br&amp;gt;&lt;br /&gt;
Задачки простые, подумать надо (или не надо) только над последней, поэтому решаем все задачки подряд.&lt;br /&gt;
&lt;br /&gt;
=== Классы в C++ ===&lt;br /&gt;
Ссылка на контест:&amp;lt;br&amp;gt;&lt;br /&gt;
http://official.contest.yandex.ru/contest/746/&amp;lt;br&amp;gt;&lt;br /&gt;
Вы эти задачи уже решали, так что проблем с семантикой быть не должно.&lt;br /&gt;
Важно правильно реализовать все необходимые структуры, методы и операторы.&lt;br /&gt;
&lt;br /&gt;
=== Шаблонные функции и классы в C++ ===&lt;br /&gt;
Ссылка на контест:&amp;lt;br&amp;gt;&lt;br /&gt;
http://official.contest.yandex.ru/contest/784/&amp;lt;br&amp;gt;&lt;br /&gt;
Задачки простые, решаются и без шаблонов, но наша задача - потренироваться в их написании.&lt;br /&gt;
&lt;br /&gt;
=== Второе домашнее задание ===&lt;br /&gt;
Контест с задачами:&amp;lt;br&amp;gt;&lt;br /&gt;
http://official.contest.yandex.ru/contest/763/&amp;lt;br&amp;gt;&lt;br /&gt;
Распределение задач такое же, как и в первой домашней работе.&lt;br /&gt;
&lt;br /&gt;
=== Наследование и интерфейсы в C++ ===&lt;br /&gt;
Контест с задачами:&amp;lt;br&amp;gt;&lt;br /&gt;
http://official.contest.yandex.ru/contest/797/&amp;lt;br&amp;gt;&lt;br /&gt;
Первую задачу надо решить. Вторую - если хватит сил и времени.&lt;br /&gt;
&lt;br /&gt;
=== Контрольная №1 ===&lt;br /&gt;
Контест:&amp;lt;br&amp;gt;&lt;br /&gt;
http://official.contest.yandex.ru/contest/828/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Итераторы в C++ ===&lt;br /&gt;
Контест с задачами:&amp;lt;br&amp;gt;&lt;br /&gt;
http://official.contest.yandex.ru/contest/806/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== StyleGuide ===&lt;br /&gt;
Ссылка на Google StyleGuide, на примере которого мы разбираем общие правила написания кода&amp;lt;br&amp;gt;&lt;br /&gt;
http://google-styleguide.googlecode.com/svn/trunk/cppguide.html&lt;br /&gt;
&lt;br /&gt;
=== Домашние работы 3 и 4 ===&lt;br /&gt;
Ссылка на контест:&amp;lt;br&amp;gt;&lt;br /&gt;
http://official.contest.yandex.ru/contest/946/&amp;lt;br&amp;gt;&lt;br /&gt;
Распределение задач старое, как на первых двух домашках.&lt;br /&gt;
&lt;br /&gt;
=== OpenGL и физика ===&lt;br /&gt;
Ссылка на пример кода:&amp;lt;br&amp;gt;&lt;br /&gt;
http://pastebin.com/JeuXPV9Z&amp;lt;br&amp;gt;&lt;br /&gt;
Компилировать его надо строкой&amp;lt;br&amp;gt;&lt;br /&gt;
g++ main.cpp -lGL -lGLU -lglut -std=c++0x&amp;lt;br&amp;gt;&lt;br /&gt;
Задача на семинар - попытаться сымитировать физику двух атомов.&amp;lt;br&amp;gt;&lt;br /&gt;
Они должны притягиваться, если отлетели далеко друг от друга, и отталкиваться, если приблизились слишком сильно.&amp;lt;br&amp;gt;&lt;br /&gt;
Если это получится, попробуйте построить из них кристаллическую решетку.&amp;lt;br&amp;gt;&lt;br /&gt;
Если решетка не развалится сама, попробуйте задать начальные скорости нескольким атомам и посмотреть, что будет :)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Сетевые приложения ===&lt;br /&gt;
Ссылка на код сервера:&amp;lt;br&amp;gt;&lt;br /&gt;
http://pastebin.com/fzF8yR6W&amp;lt;br&amp;gt;&lt;br /&gt;
Сслыка на архив с сервером астероидов:&amp;lt;br&amp;gt;&lt;br /&gt;
https://yadi.sk/d/4JCWLAIZdQQXs&amp;lt;br&amp;gt;&lt;br /&gt;
Старая ссылка на архив с клиентом:&amp;lt;br&amp;gt;&lt;br /&gt;
https://yadi.sk/d/CtPlQDGRdVnxZ&lt;br /&gt;
&lt;br /&gt;
=== Пробный экзамен ===&lt;br /&gt;
На странице [[Основы_и_методологии_программирования|основы и методологии программирования]] есть ссылки на пробный экзамен и его решения.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Оценки ===&lt;br /&gt;
На данный момент результаты такие:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! !!Фамилия !! Имя !! Отчество !! ДЗ-1 !! ДЗ-2 !! КР !! ДЗ-3 !! ДЗ-4 !! Accum !! Exam !! Sum&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Гущенко-Чеверда || Иван || Ильич || 10 || 10 || 10 || 10 || 9 || 9,8 || 9 || 9,6 &lt;br /&gt;
|-&lt;br /&gt;
| 2 ||	Деркач || Денис || Анатольевич || 10 || 10 || 10 || 10 || 8 || 9,6 || 9 || 9,45&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Исхаков || Тимур || Рашидович || 10 || 10 || 10 || 10 || 10 || 10 || 10 || 10&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Кузнецов || Георгий || Алексеевич || 6 || 8 || 10 || 5 || 7 || 7,2 || 9 || 7,65&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Мельниченко || Пётр || Валерьевич || 10 || 4 || 10 || 0 || 0 || 4,8 || 10 || 6,1&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Носков || Степан || Алексеевич || 10 || 8 || 10 || 5 || 5 || 7,6 || 10 || 8,2&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Пособин || Глеб || Игоревич || 10 || 10 || 10 || 10 || 10 || 10 || 10 || 10&lt;br /&gt;
|-&lt;br /&gt;
| 8 || Пролеев || Лев || Николаевич || 10 || 10 || 10 || 10 || 5 || 9 || 9 || 9&lt;br /&gt;
|-&lt;br /&gt;
| 9 || Рябушев || Антон || Федорович || 10 || 10 || 10 || 10 || 9 || 9,8 || 9 || 9,6&lt;br /&gt;
|-&lt;br /&gt;
| 10 || Сайранов || Айдар || Дамирович || 10 || 8 || 10 || 10 || 5 || 8,6 || 10 || 8,95&lt;br /&gt;
|-&lt;br /&gt;
| 11 || Святокум || Полина || Олеговна || 8 ||10 || 10 || 10 || 5 || 8,6 || 10 || 8,95&lt;br /&gt;
|-&lt;br /&gt;
| 12 || Султанов || Арсен || Русланович || 10 || 10 || 10 || 0 || 0 || 6 || 10 || 7&lt;br /&gt;
|-&lt;br /&gt;
| 13 || Трофимов || Иван || Андреевич || 2 || 8 || 10 || 10 || 8 || 7,6 || 10 || 8,2&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>imported&gt;Melnichuk</name></author>
	</entry>
</feed>