Факултет за Информатички Науки и Компјутерско Инженерство - ФИНКИ

Благоев

The Spartan General
Член од
8 јануари 2014
Мислења
1.357
Поени од реакции
2.087
Зарем Јава не работи со тој концепт? Се' е по референца...бар мислам. Како да го коригирам тогаш..?
Ми изгледаше како СиШарп код.
Џава работи со референци по вредност, и затоа не може да ги замени вредностите на променливи кои не припаѓаат на една класа.
Но, може да ги дефинираш како пар, и после да си ја напишеш Swap.

Нешто како
Код:
class Pair<T> {
        T t1;
        T t2;
}

public static <T> void swap(Pair<T> p)
{
      T temp=p.t1;
       p.t1=p.t2;
       p.t2=temp;
}
пс. Може и да сум грешка. :)
 

Amaterasu

123123113
Член од
17 април 2012
Мислења
1.167
Поени од реакции
1.145
Кога како аргумент во една ф-ција примаш референца, се креира нова референца, која што покажува таму каде што покажува референцата која си ја испратил/ла како аргумент.
На пример ако имаш две променливи a1 и a2 и сега повикаш swap(a1,a2)

а1 референцира кон некој податок p1;
а2 референцира кон некој податок p2;
Сега кога ќе ја повикаме функцијата се креираат t1 и t2.
t1 референцира кон p1;
t2 референцира кон p2;
Сега ти ги менуваш t1 и t2 и добиваш
t1 референцира кон p2
t2 референцира кон p1
Но овие две променливи немаат никаква врска со a1 и а2. Поради тоа тие ти остануваат непроменети.
 
Член од
22 февруари 2014
Мислења
172
Поени од реакции
27
Ми изгледаше како СиШарп код.
Џава работи со референци по вредност, и затоа не може да ги замени вредностите на променливи кои не припаѓаат на една класа.
Но, може да ги дефинираш како пар, и после да си ја напишеш Swap.

Нешто како
Код:
class Pair<T> {
        T t1;
        T t2;
}

public static <T> void swap(Pair<T> p)
{
      T temp=p.t1;
       p.t1=p.t2;
       p.t2=temp;
}
пс. Може и да сум грешка. :)
Да, го најдов истово на Гугл, само што проблемот е што двете променливи кои ги заменувам се од ист тип T (генерик) т.е. Т first и T second...затоа не ми е јасно :/[DOUBLEPOST=1421094546][/DOUBLEPOST]
Кога како аргумент во една ф-ција примаш референца, се креира нова референца, која што покажува таму каде што покажува референцата која си ја испратил/ла како аргумент.
На пример ако имаш две променливи a1 и a2 и сега повикаш swap(a1,a2)

а1 референцира кон некој податок p1;
а2 референцира кон некој податок p2;
Сега кога ќе ја повикаме функцијата се креираат t1 и t2.
t1 референцира кон p1;
t2 референцира кон p2;
Сега ти ги менуваш t1 и t2 и добиваш
t1 референцира кон p2
t2 референцира кон p1
Но овие две променливи немаат никаква врска со a1 и а2. Поради тоа тие ти остануваат непроменети.
Во ред, разбрав сега како оди со референцирањето. Како да го коригирам (двете се од ист тип и се е внатре во една иста класа)?
 

Amaterasu

123123113
Член од
17 април 2012
Мислења
1.167
Поени од реакции
1.145
Епа тогаш направи го swap-oт таму каде што ти се наоѓаат референците кои сакаш да ги замениш. Во случајов од таму каде што ја повикуваш функцијата, едноставно направи замена на вредностите. Наместо да повикаш swap(a1,a2), таму каде што ти се а1 и а2 направи T temp = a1; a1 = a2; a2 = temp;
 
Член од
22 февруари 2014
Мислења
172
Поени од реакции
27
Епа тогаш направи го swap-oт таму каде што ти се наоѓаат референците кои сакаш да ги замениш. Во случајов од таму каде што ја повикуваш функцијата, едноставно направи замена на вредностите. Наместо да повикаш swap(a1,a2), таму каде што ти се а1 и а2 направи T temp = a1; a1 = a2; a2 = temp;
Значи ако имам 1000 swap - ови во рамки на програм во јава, испаѓа дека за да ми работи, морам 1000 пати да го повторам истиот код од 3,4 линии, наместо да го креирам еднаш (да направам метод) и да го повикам секогаш кога ми треба :/ Звучи тотално непрактично.
 

Благоев

The Spartan General
Член од
8 јануари 2014
Мислења
1.357
Поени од реакции
2.087
За да инстанцираш Pair<T>, треба да дефинираш што е <T> . Кога ќе го дефинираш типот, автоматски ќе ги промени сите референци каде што се појавува (во генеричкиот метод).

Креирај си пар од твојата класа, дефинирај си го методот и си го повикувај каде што ти треба.
 

Amaterasu

123123113
Член од
17 април 2012
Мислења
1.167
Поени од реакции
1.145
Значи ако имам 1000 swap - ови во рамки на програм во јава, испаѓа дека за да ми работи, морам 1000 пати да го повторам истиот код од 3,4 линии, наместо да го креирам еднаш (да направам метод) и да го повикам секогаш кога ми треба :/ Звучи тотално непрактично.
Па сега, секогаш можеш да креираш низа од елементи и да им ги менуваш местата. На пример пробај направи низа од 2 елементи и во функција смени им ги местата. Финтата е дека во 99% од случаевите нема да имаш ваква потреба да правиш замени на референци. Swap методот е еден од ретките за кој е малце зезнато да се напише во java. А ако толку сакаш swap функција во Јава, еве
T swap ( T x, T y)
{
return x;
}
И ќе ја повикуваш со :
y = swap(x, x=y);
 

Благоев

The Spartan General
Член од
8 јануари 2014
Мислења
1.357
Поени од реакции
2.087
Па сега, секогаш можеш да креираш низа од елементи и да им ги менуваш местата. На пример пробај направи низа од 2 елементи и во функција смени им ги местата. Финтата е дека во 99% од случаевите нема да имаш ваква потреба да правиш замени на референци. Swap методот е еден од ретките за кој е малце зезнато да се напише во java. А ако толку сакаш swap функција во Јава, еве
T swap ( T x, T y)
{
return x;
}
И ќе ја повикуваш со :
y = swap(x, x=y);
Dirty hack. :icon_lol::icon_lol::icon_lol::icon_lol:
 
Член од
22 февруари 2014
Мислења
172
Поени од реакции
27
Па сега, секогаш можеш да креираш низа од елементи и да им ги менуваш местата. На пример пробај направи низа од 2 елементи и во функција смени им ги местата. Финтата е дека во 99% од случаевите нема да имаш ваква потреба да правиш замени на референци. Swap методот е еден од ретките за кој е малце зезнато да се напише во java. А ако толку сакаш swap функција во Јава, еве
T swap ( T x, T y)
{
return x;
}
И ќе ја повикуваш со :
y = swap(x, x=y);
Ме интересираше како би се постигнало да се влијае на оригиналниот објект, за да знам за било кој метод како да повикувам метод. Методот кој го постави е одличен и очигледно тоа можам да го постигнам само со враќање на вредност. Благодарам многу на сите :)
П.С. не функционира баш, ама битно ме насочи како да размислувам :D
 

Amaterasu

123123113
Член од
17 април 2012
Мислења
1.167
Поени од реакции
1.145
Ме интересираше како би се постигнало да се влијае на оригиналниот објект, за да знам за било кој метод како да повикувам метод. Методот кој го постави е одличен и очигледно тоа можам да го постигнам само со враќање на вредност. Благодарам многу на сите :)
П.С. не функционира баш, ама битно ме насочи како да размислувам :D
Како мислиш не функционира ? Не ти ги менува вредностите ?
 
Член од
22 февруари 2014
Мислења
172
Поени од реакции
27
Па сега, секогаш можеш да креираш низа од елементи и да им ги менуваш местата. На пример пробај направи низа од 2 елементи и во функција смени им ги местата. Финтата е дека во 99% од случаевите нема да имаш ваква потреба да правиш замени на референци. Swap методот е еден од ретките за кој е малце зезнато да се напише во java. А ако толку сакаш swap функција во Јава, еве
T swap ( T x, T y)
{
return x;
}
И ќе ја повикуваш со :
y = swap(x, x=y);
Ме интересираше како би се постигнало да се влијае на оригиналниот објект, за да знам за било кој метод како да повикувам метод. Методот кој го постави е одличен и очигледно тоа можам да го постигнам само со враќање на вредност. Благодарам многу на сите :)
Како мислиш не функционира ? Не ти ги менува вредностите ?
Моја грешка, се извинувам, ми недостигал услов. Благодарам за одвоеното време, навистина ми помогна :))
 
Член од
30 август 2013
Мислења
51
Поени од реакции
3
Ако може некој да каже за овие два предмети:
1. Напредни Алгоритми/ Алгоритми и сложеност
2. Визуелно програмирање

Што отприлика се учи и тешки ли се за положување ?
 

Amaterasu

123123113
Член од
17 април 2012
Мислења
1.167
Поени од реакции
1.145
Ако може некој да каже за овие два предмети:
1. Напредни Алгоритми/ Алгоритми и сложеност
2. Визуелно програмирање

Што отприлика се учи и тешки ли се за положување ?
Напредни Алгоритми / Алгоритми и сложеност, колку што знам, не се предмети кој се земаат само за положување. Ги немам слушано, но од колеги што ги слушале знам дека се учат доста посложени работи (во споредба со АПС).
Визуелно програмирање е доста интересен предмет. Се учи C#, на почеток се учат форми и компоненти, настанско програмирање. Во вторито дел повеќе се учи "цртање". Исто така има семинарска ( се делите во тимови и правите игри ) која носи некаде 10-20% од поените. Материјалот е сличен со ИП (како што беше годинава) само што би рекол дека е неколку пати потежок. Така да, Визуелно не е лесен предмет, но е доста интересен. Плус го држат Маџаров и Ѓорѓевиќ ( кои и двајцата се океј професори ).
 

/МIRЧ3_МкД\

Временски патник
Член од
7 март 2012
Мислења
380
Поени од реакции
102
Дали има некој материјали по Бази на Податоци , колоквиуми, испитни, решени, нерешени шо и да е, да знам шо се паѓа отприлика :)
 
Член од
22 февруари 2014
Мислења
172
Поени од реакции
27
Некој совет за полесни предмети за летен семестар? Во комбинација со оперативни,софтверско,вештачка и ВиС од предтоа ми треба нешто полесно (да не е Бизнис, КНИО, Веб дизајн...)
 

Kajgana Shop

На врв Bottom