Loading...
MartinDekov avatar MartinDekov -1 Точки

Най - сложни алгоритми с основни знания?

Намирам писането на алгоритми за чертаене на фигури(имаше на един от изпитите чертаене на яйце) за доста сложна задача, дори когато имам написан кода, ми отнема известно време да го разчета.Това означава ли, че програмирането не е за мен?Имам основни знания по програмиране от Pascal(училище) и знам целта на методите.На основно ниво има ли по-сложно от чертаенето на фигури?

3
Общи приказки
Filkolev avatar Filkolev 4482 Точки
Best Answer

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

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

По подобен начин стоят нещата и с алгоритмичните задачи, които се дават на изпит или със звезда в домашните/упражненията. Проблеми, над които съм се блъскал с дни, ми се струваха елементарни след като минах курса по алгоритми - виждам дадена задача, разбирам, че това е примерно комбинаторна задача, разбирам, че търся пермутация с повторение, след което просто намирам готов алгоритъм и го модифицирам ако се наложи. Т.е. аз имам вече някакъв набор инструменти в някакво куфарче да го наречем и като видя някаква задача доста по-лесно мога да преценя кой инструмент да извадя, за да я реша без особени драми. Ако в куфарчето имам само знанията какво е цикъл, променлива и проверка на условие, това значи, че аз от най-базовите градивни елементи трябва да създам решение от нулата, което (ако говорим за тип задача, която не съм решавал) ще е изключително трудно и ще изисква и не малко творчество. 

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

Ако ти е трудно да разбереш готово решение на задача или: 1) не си затвърдил базовите си знания, ситанксис и основни конструкции, 2) решението просто е кофти написано, вярно, но нечетимо, неразбираемо. Относно второто няма какво да направиш. Така че просто решавай задачи и моят съвет е по трудния начин - пробваш едно, друго, трето; псуваш, търсиш съвети как да подходиш, пак пробваш, пак псуваш и накрая ще стане. Втори път като решаваш нещо подобно ще е много по-лесно, защото в процеса на пробване и псуване си се сблъскал и си решил един куп по-малки проблеми, които може да срещнеш в много други задачи. И този процес е в пъти по-ползотворен от това да разгледаш нещо наготово, да го разбереш и да си кажеш "да, разбрах го". И разбира се за трудния начин трябва време; ако от един месец се занимаваш по-сериозно с програмиране нормално е много задачи да ти се струват непосилни.

4
WifiAvivi avatar WifiAvivi 151 Точки

Ако приемем, че задачите на изпита (за основно ниво - както го наричаш) са подредени по трудност, вземайки под внимание последния изпит (Practical Exam - 24 April 2016) - след трета задача (03. Strawberry - рисуването на фигурка в конзолата) следват още две задачи - които предполагат да се решат с масиви (04. Array Modifier)  и матрици (05. Multiply Targeted Cell).

 

Това че има по-трудни задачи от нивото с което идваш не значи, че програмирането не е за теб. Та нали точно за това са тези курсове.

 

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

4
01/05/2016 22:23:27
borislav9212 avatar borislav9212 745 Точки

Здравей,

Чертаенето на фигурки с цикли са най-лесните задачи, при тях няма много мислене и алгорими, гледаш фигурките в примерите и намираш формулите който ти трябват и кодиш. Не искам да те плаша точно обратното, решавай повече задачи, гледай лекции и ще ти станат лесни. Има много по сложни задачи от тях, всичко се учи стига да имаш желание. А на въпроса дали програмирането е за теб, това зависи само от теб самия, пак казвам трябва да имаш желание да се научиш, да отделяш много време минимум 5,6 часа на ден да кодиш, и да не се отказваш като запънеш на някоя задача, ако трябва ще я мислиш един ,два дни, така се става програмист. Всяко начало е трудно, ако искаш занапред да ти е по-лесно в живота сега е времето да учиш. Въдещето ти е в твоите ръце.

Успех!

4
ViPeRsA avatar ViPeRsA 189 Точки

Не мога да кажа кои задачи са най - лесни, но тези са единствените които се учат.Като решиш 20, на 21вата веднага ще ти мине през очите алгоритъмът.

2
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.