Курсы переподготовки преподавателей по программированию 2017


#21

Спасибо!


#22

Вот пример, который был на лекции 7 в конце, записанный с помощью стандартных функций Dict и KV. Dict конструирует словарь, KV - KeyValuePair.

begin
  var graph := Dict(('Rostov',Dict(KV('Moscow',1000),KV('Bataisk',10))),
                ('Moscow',Dict(KV('Rostov',1000))),
                ('Bataisk',Dict(KV('Rostov',10))) 
               );
  graph.Println(NewLine);
  graph['Rostov']['Moscow'] := 1100;
  graph['Moscow']['Rostov'] := 1100;
  Println;
  graph.Println(NewLine);
end.

#23

Последовательности PascalABCNET 2016.pdf (304,7 КБ)


#24

Я немного ошибся в примере на лекции - s.Matches возвращает последовательность Match, а не string, поэтому нужен еще один Select чтобы преобразовать его к последовательности строк:

begin
  var q := ReadLines('a1.pas').Select(s->s.Matches('\w+')).SelectMany(x->x)
           .Select(x->x.Value);
  var d := new Dictionary<string,integer>;
  foreach var x in q do
    if d.ContainsKey(x) then
      d[x] := d[x] + 1
    else d[x] := 1;  
  d.OrderByDescending(x->x.Value).Take(10).Print(NewLine);  
end.

Используя d.Get, которая возвращает либо значение, соответствующее ключу, либо 0 если ключа нет, можно записать короче:

begin
  var q := ReadLines('FreqFile.pas').Select(s->s.Matches('\w+')).SelectMany(x->x)
             .Select(x->x.Value);
  var d := new Dictionary<string,integer>;
  foreach var x in q do
    d[x] := d.Get(x) + 1;
  d.OrderByDescending(x->x.Value).Take(10).Print(NewLine);  
end.

Результат применения к тексту программы таков :

(x,9)
(d,4)
(var,3)
(q,2)
(Select,2)
(s,2)
(Value,2)
(begin,1)
(ReadLines,1)
(FreqFile,1)

#25

Я говорил, что можно поменять источник строк - взять файл в Интернете. Вот, в сети лежит текст Войны и мира, пропустим его через нашу программу:

begin
  var w := new System.Net.WebClient();
  var ss := w.DownloadString('http://vojnaimir.ru/files/book1.txt');

  var q := ss.MatchValues('\w+');
  var d := new Dictionary<string,integer>;
  foreach var x in q do
    d[x] := d.Get(x) + 1;
  d.OrderByDescending(x->x.Value).Take(20).Print(NewLine);  
end.

Результат:

(и,10137)
(в,4863)
(не,4221)
(что,3652)
(на,3200)
(с,3025)
(он,3017)
(как,1913)
(его,1876)
(к,1778)
(то,1606)
(я,1354)
(она,1195)
(сказал,1145)
(было,1137)
(это,1030)
(за,961)
(так,952)
(но,949)
(ее,897)

Если захотим взять только собственные имена, то поставим фильтр: слово с большой буквы и длины не менее 4:

  var q := ss.MatchValues('\w+').Where(s->s[1].IsUpper and (s.Length>3));

Результат:

(Пьер,620)
(Андрей,593)
(Наташа,501)
(Ростов,432)
(Князь,316)
(Николай,241)
(Марья,237)
(Соня,200)
(Пьера,187)
(Анна,184)
(Долохов,156)
(Денисов,154)
(Борис,152)
(Андрея,151)
(Василий,139)
(Анатоль,137)
(Ростова,121)
(Когда,112)
(Элен,110)
(Пьеру,107)

#26

5 сообщений перенесены в новую тему: GetHashCode для слияния имен


#27

Опубликована Лекция 8. https://youtu.be/lE05l_RYqsc


#28

Опубликована Лекция 9. https://youtu.be/AjtBMQ26YPc Объектно-ориентированное программирование - всё, сразу, быстро, сжато, нечётко, с ошибками.

В числе прочих вопросов освещены:

  • Как неправильно пишется Барбара Лискоу на английском
  • Какие принципы SOLID нарушает нагрузка преподавателя ЮФУ
  • Что общего у студента и математической точки
  • Почему нас окружают интерфейсы и почему мы их не замечаем в реальной жизни
  • Что есть на самом деле sequence of T

GetHashCode для слияния имен
#29

Это последняя была?


#30

Да


#31

Все хорошее когда-то заканчивается…


#32

Начинается новый цикл лекций по второй части курса 6.04 и 7.04 с 10.00 до 13.00 в ауд. 206


#33

Видео тоже будет или как выше было написано, “все хорошее” действительно закончилось? ))


#34

Вряд ли “всё хорошее” заключается в наличии видео )

Попробовали писать, пока на планшет. Что получилось, ещё не смотрела. Если запись приемлема, выложу. Обещали камеру ). Хорошо бы ещё штатив


#35

Как ни странно, но для тех, кто не может по той или иной причине присутствовать на Ваших лекциях, “все хорошее” - это именно их видеозапись.


#36

Часть 2. Лекция1 https://youtu.be/-pzmLssBcVE Лекция1. Продолжение https://youtu.be/-pzmLssBcVE


#37

A у меня видео не открывается :frowning:


#38

Попробую посмотреть, в чем дело. Но позже


#39

Ссылки “не туда”. Сравните их вид со ссылками, которые давал @Admin Ваши ведут к менеджеру для создания канала.


#40

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