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

  • Креатор на темата Креатор на темата ASimov
  • Време на започнување Време на започнување
Зарем Јава не работи со тој концепт? Се' е по референца...бар мислам. Како да го коригирам тогаш..?
Ми изгледаше како СиШарп код.
Џава работи со референци по вредност, и затоа не може да ги замени вредностите на променливи кои не припаѓаат на една класа.
Но, може да ги дефинираш како пар, и после да си ја напишеш 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;
}

пс. Може и да сум грешка. :)
 
Кога како аргумент во една ф-ција примаш референца, се креира нова референца, која што покажува таму каде што покажува референцата која си ја испратил/ла како аргумент.
На пример ако имаш две променливи a1 и a2 и сега повикаш swap(a1,a2)

а1 референцира кон некој податок p1;
а2 референцира кон некој податок p2;
Сега кога ќе ја повикаме функцијата се креираат t1 и t2.
t1 референцира кон p1;
t2 референцира кон p2;
Сега ти ги менуваш t1 и t2 и добиваш
t1 референцира кон p2
t2 референцира кон p1
Но овие две променливи немаат никаква врска со a1 и а2. Поради тоа тие ти остануваат непроменети.
 
Ми изгледаше како СиШарп код.
Џава работи со референци по вредност, и затоа не може да ги замени вредностите на променливи кои не припаѓаат на една класа.
Но, може да ги дефинираш како пар, и после да си ја напишеш 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. Поради тоа тие ти остануваат непроменети.
Во ред, разбрав сега како оди со референцирањето. Како да го коригирам (двете се од ист тип и се е внатре во една иста класа)?
 
Епа тогаш направи го swap-oт таму каде што ти се наоѓаат референците кои сакаш да ги замениш. Во случајов од таму каде што ја повикуваш функцијата, едноставно направи замена на вредностите. Наместо да повикаш swap(a1,a2), таму каде што ти се а1 и а2 направи T temp = a1; a1 = a2; a2 = temp;
 
Епа тогаш направи го swap-oт таму каде што ти се наоѓаат референците кои сакаш да ги замениш. Во случајов од таму каде што ја повикуваш функцијата, едноставно направи замена на вредностите. Наместо да повикаш swap(a1,a2), таму каде што ти се а1 и а2 направи T temp = a1; a1 = a2; a2 = temp;
Значи ако имам 1000 swap - ови во рамки на програм во јава, испаѓа дека за да ми работи, морам 1000 пати да го повторам истиот код од 3,4 линии, наместо да го креирам еднаш (да направам метод) и да го повикам секогаш кога ми треба :/ Звучи тотално непрактично.
 
За да инстанцираш Pair<T>, треба да дефинираш што е <T> . Кога ќе го дефинираш типот, автоматски ќе ги промени сите референци каде што се појавува (во генеричкиот метод).

Креирај си пар од твојата класа, дефинирај си го методот и си го повикувај каде што ти треба.
 
Значи ако имам 1000 swap - ови во рамки на програм во јава, испаѓа дека за да ми работи, морам 1000 пати да го повторам истиот код од 3,4 линии, наместо да го креирам еднаш (да направам метод) и да го повикам секогаш кога ми треба :/ Звучи тотално непрактично.
Па сега, секогаш можеш да креираш низа од елементи и да им ги менуваш местата. На пример пробај направи низа од 2 елементи и во функција смени им ги местата. Финтата е дека во 99% од случаевите нема да имаш ваква потреба да правиш замени на референци. Swap методот е еден од ретките за кој е малце зезнато да се напише во java. А ако толку сакаш swap функција во Јава, еве
T swap ( T x, T y)
{
return x;
}
И ќе ја повикуваш со :
y = swap(x, x=y);
 
Па сега, секогаш можеш да креираш низа од елементи и да им ги менуваш местата. На пример пробај направи низа од 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:
 
Па сега, секогаш можеш да креираш низа од елементи и да им ги менуваш местата. На пример пробај направи низа од 2 елементи и во функција смени им ги местата. Финтата е дека во 99% од случаевите нема да имаш ваква потреба да правиш замени на референци. Swap методот е еден од ретките за кој е малце зезнато да се напише во java. А ако толку сакаш swap функција во Јава, еве
T swap ( T x, T y)
{
return x;
}
И ќе ја повикуваш со :
y = swap(x, x=y);
Ме интересираше како би се постигнало да се влијае на оригиналниот објект, за да знам за било кој метод како да повикувам метод. Методот кој го постави е одличен и очигледно тоа можам да го постигнам само со враќање на вредност. Благодарам многу на сите :)
П.С. не функционира баш, ама битно ме насочи како да размислувам :D
 
Ме интересираше како би се постигнало да се влијае на оригиналниот објект, за да знам за било кој метод како да повикувам метод. Методот кој го постави е одличен и очигледно тоа можам да го постигнам само со враќање на вредност. Благодарам многу на сите :)
П.С. не функционира баш, ама битно ме насочи како да размислувам :D
Како мислиш не функционира ? Не ти ги менува вредностите ?
 
Па сега, секогаш можеш да креираш низа од елементи и да им ги менуваш местата. На пример пробај направи низа од 2 елементи и во функција смени им ги местата. Финтата е дека во 99% од случаевите нема да имаш ваква потреба да правиш замени на референци. Swap методот е еден од ретките за кој е малце зезнато да се напише во java. А ако толку сакаш swap функција во Јава, еве
T swap ( T x, T y)
{
return x;
}
И ќе ја повикуваш со :
y = swap(x, x=y);
Ме интересираше како би се постигнало да се влијае на оригиналниот објект, за да знам за било кој метод како да повикувам метод. Методот кој го постави е одличен и очигледно тоа можам да го постигнам само со враќање на вредност. Благодарам многу на сите :)
Како мислиш не функционира ? Не ти ги менува вредностите ?
Моја грешка, се извинувам, ми недостигал услов. Благодарам за одвоеното време, навистина ми помогна :))
 
Ако може некој да каже за овие два предмети:
1. Напредни Алгоритми/ Алгоритми и сложеност
2. Визуелно програмирање

Што отприлика се учи и тешки ли се за положување ?
 
Ако може некој да каже за овие два предмети:
1. Напредни Алгоритми/ Алгоритми и сложеност
2. Визуелно програмирање

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

Kajgana Shop

Back
На врв Bottom