$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \newcommand{\mod}{\,\mathrm{mod}\,} \renewcommand{\div}{\,\mathrm{div}\,} \newcommand{\metar}{\,\mathrm{m}} \newcommand{\cm}{\,\mathrm{cm}} \newcommand{\dm}{\,\mathrm{dm}} \newcommand{\litar}{\,\mathrm{l}} \newcommand{\km}{\,\mathrm{km}} \newcommand{\s}{\,\mathrm{s}} \newcommand{\h}{\,\mathrm{h}} \newcommand{\minut}{\,\mathrm{min}} \newcommand{\kmh}{\,\mathrm{\frac{km}{h}}} \newcommand{\ms}{\,\mathrm{\frac{m}{s}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$

Search through HTML

  • Dozvoljeno polaganje
  • Projekti za blok nastavu
  • Nema
  • DjMaks, Vlajko, Teo, Andrija, Novak, Vukasin, Perin...
  • 1/4/2016

Математичка гимназија

Блок настава за трећи разред, децембар 2013.

Поставка задатка

Потребно је имплементирати апликацију која омогућава једноставну претрагу текстуалног садржаја интернет странице. Апликација треба да осликава композитну, модуларну и објектно орјентисану целину имплементирану корз програмски језик C#.

Програм се састоји из три целине:

·       Прва целина је HTML парсер. Као улазни податак парсер користи Интернет страницу сачувану у меморији рачунара. Паресер би требало да препозна текстуални саджај странице, да води рачуна о позицији речи унутар странице и да текстуалним садржајем и позицијама иницијализује структуре погодне за претрагу.

·       Друга целина је имплементација хеш табеле (HashTable у C# терминологији се често користи израз Dictionary). Хеш табела треба да омогући додавање речи и листе позиција као и дохватање позиција за дату реч. Поред тога потребно је имплементирати и пражњење целе структуре. Детаљи у вези са хеш табелама су дати у прилогу са осталим материјалима. Важно је напоменути да ђаци, у имплементацији хеш табеле, могу користити произвољну хеш функцију и произвољан алгоритам разрешења колизије. Један пример је дат кроз материјале.

·       Трећа целина се односи на имплементацију структура и алгоритма за претрагу. Потребно је имплементирати структуру претраге која користи Хеш табелу из претходне ставке. Структура претраге треба да пружи могућност додавања нове речи са позицијом, као и додавање нове позиције за већ постојећу реч. Осим структуре, потребно је имплементирати и алгоритам претраге. Алгоритам би требало да одреди позиције појављивања секвенце (једна до три) узастопне речи, где је позиција секвенце заправо позиција прве речи у секвенци. Пример једног алгоритма је дат кроз материјале, а ђаци се охрабрују да размисле и имплементирају и друге алгоритме.

Уз текст задатка приложени су UML дијаграм и „костур“ кода у C# (као и C++ и Java).

Напомене:
- За овај задатак са блока заинтересовани професори могу да се јаве ако желе да добију комплетан код урађен у C++, C# или Java имплементацији, а окачен је само код поставке где је остављен само костур кода.

- У табу са материјалима можете наћи UML дијаграм класа, презентацију везану за интерфејсе и хеш табеле као и пример HTML фајла који се може користити за претрагу.