Програмски преводиоци 1 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
м (Još jedan uslov)
м (Po čemu pamtim)
 
(Није приказано 11 међуизмена 3 корисника)
Ред 6: Ред 6:
| одсек    = СИ, РТИ
| одсек    = СИ, РТИ
}}
}}
'''Програмски преводиоци 1''' је обавезни предмет у седмом семестру на СИ и РТИ.
Значи '''Програмски преводиоци 1''' је значи обавезни предмет значи у седмом семестру на СИ и РТИ.


== Корисне везе ==
== Корисне везе ==
* [https://drive.google.com/open?id=107YMW0yq1ShVDAIyVtzLGwJ_H8Sm13D1 ETF SI] (модификације)
* [https://drive.google.com/open?id=107YMW0yq1ShVDAIyVtzLGwJ_H8Sm13D1 ETF SI] (модификације)
* [https://app.box.com/s/0r50je333z1qyypz0h3rm0iqb9s0d64f/folder/38797850748 ETF Materijali (Box)] (решења старијих рокова)
* [https://app.box.com/s/0r50je333z1qyypz0h3rm0iqb9s0d64f/folder/38797850748 ETF Materijali (Box)] (решења старијих рокова)
* [https://www.youtube.com/playlist?list=PLd4LFMwqLLCfy8fxg6cR6YAEC1jkaDWRt Студентски видео снимци решења задатака са вежби и рокова] (обрађено градиво закључно са „парсирањем од врха ка дну“)
* [https://drive.google.com/open?id=1ZZ8p48rhYnjIxiJaGCFzyRoQv7tc-Czx Слике презентација Кристијана Жиже] (снимљене вежбе 2020)
* [[github:ksendzo/PP1-Projekat|Неки савети за израду пројекта]] (основа за водич за пројекат који је на викију)


== Настава ==
== Настава ==
{{непотпун одељак}}
Области се на следећи начин обрађују по блоковима:
<!-- Овде се наводе све битне информације у вези са предавањима и вежбама на предмету, као и потребни материјали. -->
* '''Први блок:'''
<!-- Информације које вреди поменути: које се области прелазе у којем блоку, која се развојна окружења користе, шта обично долази за који колоквијум, где могу да се нађу белешке и презентације, да ли се настава на предмету уопште држи (ако се не држи то треба назначити како би било јасно да викију не недостају информације по том питању), да ли су предавања или вежбе бескорисне -->
** лексичка анализа (коначни аутомати, минимизација аутомата, конверзија из недетерминистичког у детерминистички, конверзија регуларног израза у ДКА, лексички процесори),
** генератори лексичких анализатора (''JFlex''),
** синтаксна анализа (увод у граматике и језике),
** потисни аутомати
* '''Други блок:'''
** парсирање од дна ка врху (LR(0) парсери, SLR(1) парсери, LALR(1) парсери, опоравак од грешака),
** генератори парсера (''CUP''),
** парсирање од врха ка дну (LL(1) граматике, трансформација у LL(1), конструкција парсера по принципу рекурзивног спуста),
** атрибутивно-транслационе граматике (S-атрибутивне и L-атрибутивне граматике)
** апстрактна синтаксна стабла (''AST-CUP'')
* '''Трећи блок:'''
** табела симбола (конкретна реализација на пројекту, различите могуће организације, случај вишеструког наслеђивања),
** Микројава виртуелна машина (меморијски сегменти, инструкције, превођење израза, превођење контролних структура, превођење позива метода, наслеђивање и виртуелни механизам),
** генерисање међукода (четворке, тројке, граф тока контроле, SSA форма),
** извршно окружење (контролне и приступне везе, дисплеји, стабла активације),
** генерисање x86 кода (животни век променљивих, ''getreg'' алгоритам)
Градиво које се обрађује искључиво на предавањима укључује моделовање коначних аутомата у коду, S-атрибутивне и L-атрибутивне граматике, укључивање акција и атрибута у парсер конструисан по принципу рекурзивног спуста, апстрактна синтаксна стабла и вишеструко наслеђивање. Градиво из ''JFlex'', ''CUP'' и апстрактних синтаксних стабала, иако теоретски може да дође на колоквијумима, се јако ретко појављује. Градиво S-атрибутивних и L-атрибутивних граматика се чешће појављује на испиту него на колоквијуму.
 
Сви материјали са вежби и предавања могу се пронаћи на страници предмета, у несрећној комбинацији различитих формата (ZIP, RAR, DOC, PDF и PPT). Презентације Кристијана Жиже, чије су снимљене вежбе из 2020. године, нису доступне (обрисао их је када је одлазио са предмета), али су доступне слике тих презентација из одељка са [[#Корисне везе|корисним везама]]. На вежбама и предавањима се такође могу помињати збирка или уџбеник, оне су доступне са странице предмета (додуше тешко видљиве) и из одељка [[#Литература|са литературом]].


== Пројекат ==
== Пројекат ==
{{непотпун одељак}}
Пројекат на предмету носи 40 бодова и обавезан је. Услов за излазак на испит је барем 20 бодова освојених на одбрани пројекта. Предаје се до дан или два пред одбрану, са мало ранијом иницијалном предајом ради формирања распореда (као на [[ОО1]] и [[ОО2]]). Пројекат је подељен на 3 нивоа, где ниво А носи 20, ниво Б 30 и ниво Ц 40 бодова (могуће је освојити и број бодова између уколико пројекат испуњава део захтева за виши ниво, или уколико модификација на одбрани само делимично ради). Обично за сваки ниво буде по један захтев специфичан за ту школску годину, али се ниво Б генерално разликује од нивоа А по томе што захтева имплементацију функција, а ниво Ц од нивоа Б по томе што захтева имплементацију класа. На крају израде пројекта тражи се и документ са извештајем о пројекту.
<!-- Информације које вреди поменути: окружења за израду, шта се ради на домаћем, водичи за домаћи (уколико су довољно слични из године у годину), када се предају, како изгледа одбрана, корисни материјали -->
 
Пројекат на предмету носи 40 бодова и обавезан је. Услов за излазак на испит је барем 20 бодова освојених на одбрани пројекта.
Поставка пројекта се не мења много кроз године. У јануарском и фебруарском року важи једна поставка, у јулском се на ту поставку дода још захтева и у августовском и септембарском још више захтева. '''Пројекат је могуће бранити само једном по поставци!''' Ово значи да уколико паднете одбрану у јануару, немате право на одбрану у фебруару, и слично за августовки рок.
 
Од материјала за пројекат релевантне су вежбе из ''JFlex'', ''CUP'', табеле симбола и Микројава виртуелне машине. Поред тога, на страници предмета постоје снимци и изворни код једног студента који ради један мини-пројекат по фазама, који могу бити корисни као увод у алате за израду пројекта и примере имплементације одређених захтева. Већи део кода са тих снимака може се искористити ради имплементације захтева за ниво А на пројекту. На снимцима се као окружење за израду користи ''Eclipse'', али било које окружење инсталирано у рачунарским лабораторијама на факултету је прихватљиво. Такође је доступан '''[[Програмски преводиоци 1/Пројекат|водич за израду пројекта]].'''
 
Одбрана пројекта се организује неколико дана пре испита. На одбрани се прво раде модификације, затим асистенту или демонстратору покаже да модификација ради и потом брани основни пројекат. Одбрана основног пројекта обично није много детаљна, већ се покрену јавни тестови и види да ли раде (дају добар испис), евентуално откоментаришу неке линије које треба да изазову грешке. Том приликом се ретко тестира опоравак од синтаксних грешки и разне спецификације исписа прописане поставком. У извештај са пројекта се не улази. Структура пројекта која у поставци пише да је неопходна није заправо неопходна. Неке од модификација претходних година доступне су из одељка са [[#Корисне везе|корисним везама]].


Поставка пројекта се не мења много кроз године. У јануарском и фебруарском року важи једна поставка, у јулском се на ту поставку дода још захтева и у августовском и септембарском још више захтева. Стари домаћи доступни су са странице предмета (године 2021/2022 су доступни на http://ir4pp1.etf.rs/Domaci/2021-2022, претходне године на http://ir4pp1.etf.rs/Domaci/2020-2021 и тако даље, али не постоји лако доступна листа домаћих на једном месту).
Стари пројекти доступни су са странице предмета (године 2021/2022 су доступни на http://ir4pp1.etf.rs/Domaci/2021-2022, претходне године на http://ir4pp1.etf.rs/Domaci/2020-2021 и тако даље, али не постоји лако доступна листа домаћих на једном месту).


== Испитни рокови ==
== Испитни рокови ==
Испитни рокови се понекад објављују [http://ir4pp1.etf.bg.ac.rs/Rokovi.html на страници предмета,] и понекад имају решења у виду сликаних вежбанки студената који су освојили максималан број бодова.
Испитни рокови се понекад објављују [http://ir4pp1.etf.bg.ac.rs/Rokovi.html на страници предмета,] и понекад имају решења у виду сликаних вежбанки студената који су освојили максималан број бодова.
Рокови који су решени на викију су:
{{#dpl:
| category    = Програмски преводиоци 1
| category    = Рокови
| format      = ,\n* <span class="rok,">[[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦25¦-1}²]]</span>,
| ordermethod = title
| include    = {nerešeno}.dpl, {delimično rešeno}.dpl, {нерешено}.dpl, {делимично решено}.dpl
}}
Уколико желите да додате рок, посетите '''[[Project:Направи#Стандард (латиница)|страницу за прављење рока]]'''.


== Литература ==
== Литература ==
Постоји једна збирка задатака из предмета, доступна са странице предмета:
Постоји једна збирка задатака и један уџбеник из предмета, доступни са странице предмета:
* '''[http://ir4pp1.etf.rs/zbirka/ppzbirka.pdf "Збирка задатака из Програмских преводилаца 1"]''', Д.Велашевић, Д.Бојић, 2000 издавач: ''Електротехнички факултет Универзитета у Београду''
* '''[http://ir4pp1.etf.rs/zbirka/ppzbirka.pdf "Збирка задатака из Програмских преводилаца 1"]''', Д.Велашевић, Д.Бојић, 2000 издавач: ''Електротехнички факултет Универзитета у Београду''
* '''[http://ir4pp1.etf.rs/Predavanja/pp1_udzbenik.pdf "Програмски преводиоци 1"]''', Д.Бојић, М.Вукасовић, 2022 (верзија 0.9)
На збирку се обично позива из материјала са вежби. Уџбеник опширно покрива градиво са предавања, али како још увек није дошао до стабилне верзије уме имати чудне језичке конструкте (налик онима из првог пасуса овог чланка) који га чине неоптималним за спремање испита.


== Начин оцењивања ==
== Начин оцењивања ==
Ред 55: Ред 93:
* {{задаци|postavke}}
* {{задаци|postavke}}
* {{задаци|rešenja}}
* {{задаци|rešenja}}
*: Рокови који су преписани а нису решени су: {{рокови|нерешени}}
*: Рокови којима недостаје понеко решење су: {{рокови|делимично решени}}

Тренутна верзија на датум 16. новембар 2023. у 18:17

Значи Програмски преводиоци 1 је значи обавезни предмет значи у седмом семестру на СИ и РТИ.

Корисне везе

Настава

Области се на следећи начин обрађују по блоковима:

  • Први блок:
    • лексичка анализа (коначни аутомати, минимизација аутомата, конверзија из недетерминистичког у детерминистички, конверзија регуларног израза у ДКА, лексички процесори),
    • генератори лексичких анализатора (JFlex),
    • синтаксна анализа (увод у граматике и језике),
    • потисни аутомати
  • Други блок:
    • парсирање од дна ка врху (LR(0) парсери, SLR(1) парсери, LALR(1) парсери, опоравак од грешака),
    • генератори парсера (CUP),
    • парсирање од врха ка дну (LL(1) граматике, трансформација у LL(1), конструкција парсера по принципу рекурзивног спуста),
    • атрибутивно-транслационе граматике (S-атрибутивне и L-атрибутивне граматике)
    • апстрактна синтаксна стабла (AST-CUP)
  • Трећи блок:
    • табела симбола (конкретна реализација на пројекту, различите могуће организације, случај вишеструког наслеђивања),
    • Микројава виртуелна машина (меморијски сегменти, инструкције, превођење израза, превођење контролних структура, превођење позива метода, наслеђивање и виртуелни механизам),
    • генерисање међукода (четворке, тројке, граф тока контроле, SSA форма),
    • извршно окружење (контролне и приступне везе, дисплеји, стабла активације),
    • генерисање x86 кода (животни век променљивих, getreg алгоритам)

Градиво које се обрађује искључиво на предавањима укључује моделовање коначних аутомата у коду, S-атрибутивне и L-атрибутивне граматике, укључивање акција и атрибута у парсер конструисан по принципу рекурзивног спуста, апстрактна синтаксна стабла и вишеструко наслеђивање. Градиво из JFlex, CUP и апстрактних синтаксних стабала, иако теоретски може да дође на колоквијумима, се јако ретко појављује. Градиво S-атрибутивних и L-атрибутивних граматика се чешће појављује на испиту него на колоквијуму.

Сви материјали са вежби и предавања могу се пронаћи на страници предмета, у несрећној комбинацији различитих формата (ZIP, RAR, DOC, PDF и PPT). Презентације Кристијана Жиже, чије су снимљене вежбе из 2020. године, нису доступне (обрисао их је када је одлазио са предмета), али су доступне слике тих презентација из одељка са корисним везама. На вежбама и предавањима се такође могу помињати збирка или уџбеник, оне су доступне са странице предмета (додуше тешко видљиве) и из одељка са литературом.

Пројекат

Пројекат на предмету носи 40 бодова и обавезан је. Услов за излазак на испит је барем 20 бодова освојених на одбрани пројекта. Предаје се до дан или два пред одбрану, са мало ранијом иницијалном предајом ради формирања распореда (као на ОО1 и ОО2). Пројекат је подељен на 3 нивоа, где ниво А носи 20, ниво Б 30 и ниво Ц 40 бодова (могуће је освојити и број бодова између уколико пројекат испуњава део захтева за виши ниво, или уколико модификација на одбрани само делимично ради). Обично за сваки ниво буде по један захтев специфичан за ту школску годину, али се ниво Б генерално разликује од нивоа А по томе што захтева имплементацију функција, а ниво Ц од нивоа Б по томе што захтева имплементацију класа. На крају израде пројекта тражи се и документ са извештајем о пројекту.

Поставка пројекта се не мења много кроз године. У јануарском и фебруарском року важи једна поставка, у јулском се на ту поставку дода још захтева и у августовском и септембарском још више захтева. Пројекат је могуће бранити само једном по поставци! Ово значи да уколико паднете одбрану у јануару, немате право на одбрану у фебруару, и слично за августовки рок.

Од материјала за пројекат релевантне су вежбе из JFlex, CUP, табеле симбола и Микројава виртуелне машине. Поред тога, на страници предмета постоје снимци и изворни код једног студента који ради један мини-пројекат по фазама, који могу бити корисни као увод у алате за израду пројекта и примере имплементације одређених захтева. Већи део кода са тих снимака може се искористити ради имплементације захтева за ниво А на пројекту. На снимцима се као окружење за израду користи Eclipse, али било које окружење инсталирано у рачунарским лабораторијама на факултету је прихватљиво. Такође је доступан водич за израду пројекта.

Одбрана пројекта се организује неколико дана пре испита. На одбрани се прво раде модификације, затим асистенту или демонстратору покаже да модификација ради и потом брани основни пројекат. Одбрана основног пројекта обично није много детаљна, већ се покрену јавни тестови и види да ли раде (дају добар испис), евентуално откоментаришу неке линије које треба да изазову грешке. Том приликом се ретко тестира опоравак од синтаксних грешки и разне спецификације исписа прописане поставком. У извештај са пројекта се не улази. Структура пројекта која у поставци пише да је неопходна није заправо неопходна. Неке од модификација претходних година доступне су из одељка са корисним везама.

Стари пројекти доступни су са странице предмета (године 2021/2022 су доступни на http://ir4pp1.etf.rs/Domaci/2021-2022, претходне године на http://ir4pp1.etf.rs/Domaci/2020-2021 и тако даље, али не постоји лако доступна листа домаћих на једном месту).

Испитни рокови

Испитни рокови се понекад објављују на страници предмета, и понекад имају решења у виду сликаних вежбанки студената који су освојили максималан број бодова.

Рокови који су решени на викију су:

Уколико желите да додате рок, посетите страницу за прављење рока.

Литература

Постоји једна збирка задатака и један уџбеник из предмета, доступни са странице предмета:

На збирку се обично позива из материјала са вежби. Уџбеник опширно покрива градиво са предавања, али како још увек није дошао до стабилне верзије уме имати чудне језичке конструкте (налик онима из првог пасуса овог чланка) који га чине неоптималним за спремање испита.

Начин оцењивања

СИ

  • , — бодови са првог и другог колоквијума који се одржавају у првој и другој колоквијумској недељи и надокнађују се преко бодова са испита (0-20)
  • — бодови са пројекта (0-40)
  • — бодови са испита (0-60)
  • Бодови са испита/колоквијума:
  • Бодови:
  • Услов: ,
Бодови
Оцена 5 6 7 8 9 10

РТИ

Како на РТИ има само један колоквијум од 30 бодова, коначни бодови се рачунају по формули: .

Потребна помоћ