Професионална програма
Loading...
djc_bg2015 avatar djc_bg2015 923 Точки

Въпрос относно подготовката за изпит от 7 дек

Здравейте,

онлайн студент съм, и видях че вчера се е решавала задача, която е подготовка за изпит.

Въпроса ми е това реалните резултати от подготовката ли са:

https://judge.softuni.bg/Contests/Compete/Results/Simple/144

Защото освен 0-ли, друго не виждам?

Поздрави.

0
C# OOP Basics
kidroca avatar kidroca 117 Точки

Здравейте, 

Може ли някой да каже как се предава цял проект в judge:

Аз правя така:

  1. Изтривам папките bin и obj
  2. Слагам Проекта в zip архив
  3. Изпращам го

Работата е там че, на моя компютър минавам нулевият тест от условието, но в judge ми дава грешка за време. Засякох си времето със stopwatch и е в позволения лимит. 

Някакви съвети ?

1
RoYaL avatar RoYaL Trainer 6846 Точки

Прекъсваш ли четенето на инпут при Null на прочетената линия? Възможно е безкрайно четене да time limit-ва.

1
kidroca avatar kidroca 117 Точки

Мерси, прекъсвах на string.Empty, оправих го и върви.

За сега няма други тестове освен нулевият май?

0
RoYaL avatar RoYaL Trainer 6846 Точки

До утре трябва да има нормални тестове и малко промени по условието :)

0
RFilipov avatar RFilipov 136 Точки

И малко по-голям лимит на големината на архива ако може към 50KB, че е малко неприятно да се стараеш да го направиш както трябва и накрая да се чудиш кое да махаш, за да го качиш.

3
SPPetrov avatar SPPetrov 43 Точки

Здравейте, може ли да качите и кода с решението от подготовката на 07.12.

1
kristian.georgiev avatar kristian.georgiev 15 Точки

Да и аз бих искал да вида кода с решението. Би било доста полезно 

 

0
djc_bg2015 avatar djc_bg2015 923 Точки

Условието се промени два пъти през последните няколко часа, сега имаме ново условие, примера в задачата обаче си стои стария (който се появи след първата промяна). А нулевия тест в джъджа отговоря на най - първото условие?

1
stela.iv avatar stela.iv 115 Точки

Само на мен ли ми е адски объркано и условието ,и седемте часа решение на задачата....ако ще е нещо подобно и на изпита ,вероятно ще ми отнеме около 4 часа само да схвана условието...при това не се знае дали ще го разбера наистина ... Не искам да критикувам или да се заяждам...просто не се чувствам подготвена за подобна задача и се чудя дали само в мен е проблема.

А и тъй като не съм минала през Advanced C# ,а забелязвам ,че за решението на задачата са ползвани неща,които предполагам са взети като материал там,та относно това...трябва ли да се запозная с Dictionary по обстойно,както и следващите два реда(извадени са от кода към задачата):

 var employeeType = Assembly //??

var employee = Activator.CreateInstance(employeeType, new object[] { command.Parameters[0], command.Parameters[1] }) as IEmployee; //??

И понеже съм online и не мога да си задам хилядите въпроси на някой асистент или лектор,бих искала да помоля ,ако е възможно,след всички промени по условието,някой от обичайните ни лектори да я реши и обясни. Ако не тази същата задача,поне някаква сходна,може и от старите изпити,но без да се ползва скелет. 

Благодаря и успех на всички! :)

 

5
11/12/2015 16:03:46
RoYaL avatar RoYaL Trainer 6846 Точки

Ами решението на Данчо е, да го наречем, за шампиони. Вкарани са почти всички добри практики, които биха могли да се приложат в проекта. Това с типовете и асемблито е Reflection. Споменава се само. Идеята му е динамично да се вдигат обекти от определени стрингове, така че да нямаш switch/case. Достатъчно ти е това да знаеш за Reflection на този етап. Ако искаш да го ползваш - ще намериш информация в stack overflow. API-то му е доста богато и не бих казал, че се наизустява.

Задачката може да се реши и без функционално програмиране и речници. Само със списъци, които се обикалят докато нещо не е намерено.

По-рано днес реших задачата в залата на Questions and answers деня. Записал съм видео. Ще се качи. Качих и кода. Моето решение не е чак толкова за шампиони. Не са използвани най-добрите практики. Не съм ползвал функционално програмиране (освен в някои случаи), нито речници. Не съм изнасял съобщенията за ексепшъните в отделни класове и други шукарии, които е хубаво да се направят. Но съм го споменал във видеото.

Решението е в инстанцията на курса, а линкът е: https://softuni.bg/downloads/svn/oop/November-2015/OOP-ExamPreparation-Dec2015-Capitalism-1.zip

Надявам се да свърши работа и на хората, които имат не толкова широк поглед над езика C#.

2
kristian.georgiev avatar kristian.georgiev 15 Точки

RoYaL след като твоето решение не е чак толкова за шампиони, все пак може ли с такова студент да получи отлична оценка на изпита. 

P.S. : То е ясно,че на изпита няма как да е същото,защото най-малкото задачата няма да е същата, но да кажем - подобно.

0
stela.iv avatar stela.iv 115 Точки

Благодаря,ще го прегледам веднага щом е налично. И да...днес след известно време, прекарано в размисли ,как мога да заменя всичко това което не ми е съвсем ясно, си обясних някой подробности по задачата.:)

Още един въпрос ако не съм много нахална :) Необходимо ли е да се направят толкова много интерфейси? Не може ли да се обединят? Примерно : IPerson и IPayedPerson ? 

 

0
RoYaL avatar RoYaL Trainer 6846 Точки

@kristian.georgiev ами субективна оценка мога да ти дам, защото кодът аз съм го писал, ако трябва да си го оценявам - не бих си дал пълния брой точки с бонуси и т.н., но може би ще попадна в категорията за отличните оценки. Разбра се, сам каза, заданието няма да е същото и е трудно да се даде общовалиден отговор. Възможно е реалното задание да има повече неща, които да се осланят на, да речем, полиморфизма, които в тази задача примерно не бяха застъпени толкова добре.

@stela.iv хубаво е да се разкачат всички отделни действия в различни интерфейси. Може един интерфейс да наследява друг. Например IPayedPerson : IPerson (подозирам, че се пише Paid?). Но е хубаво да ги има, за да може да се извършват съответните действия от тях или към тях. Например да речем, че само IBoss може да плаща заплати, но само на IPaidPerson. Така лесно можеш да слагаш типове под тези интерфейси и те да работят като ги подаваш на методи, които работят с интерфейсите. Т.е. подсигуряваш си, че няма някой друг, различен от шеф, да плати пари. И че няма някой друг, освен такъв деклариран, че ще получи пари, да получи пари.

1
stela.iv avatar stela.iv 115 Точки

Мдаа...грешките в правописа,няма да ги коментирам :) Благодаря за поправката,все пак ! И Благодаря за отговора! 

Поздрави!

0
verito898 avatar verito898 265 Точки

Не че нещо ама с такова 'абстрактно' условие както се изразяват лекторите , повечето сигурно поне 2-3 часа ще отделим за да мислим и да се чудим автора какво точно е имал предвид и  какво му се  е въртяло в главата и евентуааално да направим правилната диаграма .Като ще слагате абстрактни, неточни и неясни условия сложете тогава и по-абстрактен аутпут . Не искам да гадая ама ако изпита ще е нещо подобно съмнявам се че ще има силни резултати.

Целта  на СофтУни доколкото съм запозната е да научи студентите си  а не да ги отсява и от 300 студента 5-10% да са с отлични резултати (повечето от които с предишен опит в програмирането)  другите надоло ,както се е случвало с предишни курсове  като databases, web development, а  сигурно и други. В една от лекциите чух нещо от рода - "накрая най-вероятно много малко ще са студентите с отлични резултати " което ще е и сигурно вярно, но  съмнявам се да е защото студентите са мързеливи и неучат (поне повечето).. 

5
12/12/2015 10:55:21
RoYaL avatar RoYaL Trainer 6846 Точки

Ами той аутпута може да се докара и при грешно моделиране. Какво ще получиш от стандартния вход, при какви условия трябва да го отхвърлиши при какви трябва да го приемеш ще си пише, както в момента пише в командите. Доста второстепенен фактор е judge.

0
Filkolev avatar Filkolev 4486 Точки

Преди отнемаше доста време разучаването на скелета и вникване в начина на мислене на друг човек.

Сега време ще отнеме моделирането, имайки условието да помисли човек как да направи структурата. Със сигурност ще се даде нещо, което може да се накоди за не повече от 2-3 часа ако имате ясна идея какво правите (винаги е било така). В този смисъл е напълно оправдано да се отдели 1 час в мислене, рисуване и проиграване на различни сценарии с цел изясняване на някакъв качествен дизайн преди да се напише и един ред код. Другият вариант е след 10 минути четене да напишете нещо, после като стигнете до някоя команда да се окаже, че нещо е излишно, да минете цялото приложение от интерфейсите до конкретните имплементации и да го затриете; после да се окаже, че ви липсва някаква съществена част в един от класовете, да минете цялата структура от интерфейса до конкретните имплементации, за да го добавите, и така поне няколко пъти. Подобни забавяния може да означават, че 6 часа няма да стигнат за написването на проект, който отнема около 2.

Относно условието, ще се постараем да няма твърде голямо място за рзлични интерпретации; все пак искаме целта да е пределно ясна, както и взаимодествието между различните модули на приложението. Задачата, която ще решавам в понеделник, е доста по-изчистена като логика от Capitalism, на изпита също ще гледаме да дадем нещо добре тествано и ясно, така че да няма WTF моменти. Понеже до момента не е имало изпити без скелет се опитваме в ограничено време да предоставим възможно най-много примери за подготовка като основното, което трябва студентите да схванат, е как да моделират приложението от нулата и не е толкова съществено ако някъде има странен момент в условието или не е ясно какво се случва при еди-какви си обстоятелства. Т.е. в тези подготовки се концентрирайте върху обектно ориентирания дизайн, а не върху логика по изпълнение на конкретна команда или метод.

На изпита очаквайте така да е дефинирана задачата, че класовата йерархия да е очевидна още при първото прочитане, а какво трябва да има в интерфейсите - въпрос с малко възможни отговори. Какво трябва да бъде изнесено в абстрактен клас и преизползвано в наследниците също не би трябвало да представлява проблем. Оттам нататък има множество решения, които може или не да подобрят абстракцията и качеството на приложението - например, дали да имаме по един интерфейс за всеки клас или да ги разбием на по-малки, всеки от които да дефинира конкретно поведение; дали да създаваме обектите в специални класове (факторита) или на място, където потрябва; дали да ползваме проверки със суич при създаване на обект или рефлекшън (ако знаем какво е и как да го ползваме); дали командите да са метоти на енджина или да са обекти, които се изпълняват (command pattern); как да направим приложението open for modification, т.е. кои методи да позволим на потребителя да модифицира като ги направим virtual например.

4
SPPetrov avatar SPPetrov 43 Точки

@RoYaL Имам една молба, Може ли да качиш видеото с твоето решение на задачата. 

1
RoYaL avatar RoYaL Trainer 6846 Точки

Видеото е пуснато да се качва. Днес трябва да е готово :)

0