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

Спасибо!

Вот пример, который был на лекции 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.

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

1 лайк

Я немного ошибся в примере на лекции - 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)

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

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)
4 лайка

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

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

2 лайка

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

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

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

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

Да

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

1 лайк

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

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

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

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

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

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

2 лайка

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

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

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

1 лайк

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