Programski jezik

Discussion in 'Operativni sistemi, aplikacije i programiranje' started by TopniK, Dec 20, 2006.

Thread Status:
Not open for further replies.
  1. syss

    syss Veteran foruma

    nani treba ti gigabitna kartica u sli i konro proc :D
     
  2. Nani

    Nani Komšija

    Ne nikad nisam cuo za Haskell ali sam cuo za indijanca koji moze izracunat integrale drugog reda ispod 1sec!
    Boli mene i bilo kojeg programera za Haskell.

    cin i cout su skracenice od console in i console out i predstavljaju komande u doslovnom smislu rijeci za unos odnosno ispis podataka a objekte ni u kojem slucaju!
    Objekti su skroz nesto drugo. To sto po internetu ces nac rijec object za cin i cout ne mozes prevoditi u doslovnom smislu ali to je vec druga prica.

    Sto se tice ostalog skroz razlicite frekvencije; il znas programirat 100% il se nemoj nikako ni bavit.

    Bit ce za nekih godinu kakav 45nm proc sa 2 generacijom gpu DX10 :D
     
  3. Guest

    Guest Guest

    Neke ljude ocigledno zanimaju i ovakve stvari. Neki se i nakon skoro 50 godina "kunu" u LISP.
    Ako tebi nesto nije zanimljivo i privlacno, ne mora znaciti da je to automatski jedino ispravno stajaliste.
    Ovo su vec ciste gluposti, prestani siriti dezinformacije :)
    cin i cout su klasicni objekti, koji se instanciraju sa programom kada se ukljuci iostream header. To sto se uglavnom koriste na "nestandardan" nacin - primjenom operatora (<< i >>) umjesto metoda ne mijenja njihovu sustinu.
    http://www.cplusplus.com/ref/iostream/cout.html

    Zanima me sta podrazumjevas pod 100% znanjem programiranja :)
     
  4. Nani

    Nani Komšija

    Jao majko moja iskreno ti si njoobara teska koja je uzela sa neta svasta nesto da cita a veze nema ni ocemu, ajmo da te naucim nesto OPET, jer ne mozes na silu bit u pravu :wink:
    Operatori << i >> se nazivaju znakovi redirekcije a ne kako si ih ti stavio u zagradi pa ako oces da se pravis pametan samo nastavi!

    Hajmo dalje, cin i cout se u nekim kompajlerima mogu bez ikakvih problema koristiti bez pozivanja predprocesorske naredbe #iostream.h kao i sve naporedne matematicke funkcije bez poziva #math.h headera, prema tome cin i cout nikako ne mogu biti objekti i ne lupetaj. Objekat ima osobinu nasljedjivanja osobina od drugog objekta a to sto ti pricas i citas po internetu da bi ovde ispao pametan su ciste nebuloze. Pa haj molim te nadji jos nesto na netu pa prevedi "doslovno" sa engleskog da ti opet prevedem na bosanski. A sad da bi ti pametovao o nasljedjivanu osobina objekata trebat ce ti mjeseci citanja po internetu prema tome shhhhhh!
    Mislim da si ti daleko dogurao sa pametovanjem da bi shvatio sta sam zelio reci, da nije tako i da imas ista konkretno i pametno reci ne bi pravio od sebe nubinu koja bukvalno citira ono sto se cita izmedju redova!
     
  5. Guest

    Guest Guest

    Koliko gluposti na jednom mjestu :) Sto se dzabe pravis vazan i pricas o stvarima koje ne razumijes :)

    cin i cout su objekti klase istream, odnosno ostream. Operatori << i >> se zovu operatori umetanja i izdvajanja(engl. insertion i extraction).
    Ako vec hoces da ti se sve nacrta, evo ti i tako:
    http://www.cplusplus.com/ref/iostream/iostream/
    Negiranjem ovih cinjenica samo pokazujes koliko je ova diskusija besmislena.
    Ove stvari se uce na elementratnom kursu C++-,pa kad ponovis osnovno gradivo, mozemo nastaviti sa pricom. Do tada, bolje bi ti bilo da se poklopis i ne prosipas jos vise.

    Samo ja sam jos gori sto se upustam u ovakve rasprave. Tvoj je problem hoces li prihvatiti nesto ili ne. Jos jednim odgovorom u stilu predhodnog mozes samo pokazati koliki je neznanje blagoslov :)
     
  6. Nani

    Nani Komšija

    Evo ja se i jaran dobro ismijasmo, prokopaj malo kako sma ti rekao i na pocetku, pa nadji kako se ti <<i>> "umetanja" i "izdvajanja" zovu :lol: :lol:
    REDIREKCIJA!!!!!!!!!!!!!!

    Kad smo kod osnovnog gradiva ja polozio uup, prog 1, prog2-> OOP i softverski inzinjering u roku od godine dana, qler zna ide sa mnom na faks ho ho ho 8)

    Toliko o neznanju koliko je blagoslov i da si trebao biti prevodioc engleskog bio bi a ne sopstveni tumac tehnickog engleskog :lol: :lol:
    Dakle cin je objekat a redirekcija je insertion i extraction vrlo zanimljivo, idi citaj jos sa ono stranice sto si naveo!

    Mislim ja opet ponavljam posto odlicno znas (Citat sa interneta) i odlicno prevodis (na svoj nacin) evo ti obicni zadacic koji je iz uvoda u programiranje nadams e da ga znas rijesiti ili si samo jos jedan petljaros i spamer;
    Napraviti funkciju double Racunaj(r,h,&V), gdje je V volumen cilindra V=r2*Pi*h i napravite program koji će pozvati funkciju.

    Ovaj zadatak ja ne pikam programiranjem ovo je za djecu! Hajde potrazi po internetu da ti ga neko rijesi, molim te!

    Nista vise par linija koda naravno ako znas ako ne znas zacepi vise majke ti i idi prije programiranja nauci tehnicki engleski i pojmove pa onda seri i spamaj!
     
  7. Nani

    Nani Komšija

    Naravno da ne pomazemo, spamera po forumima koji misle da su poslije 3 sata surfanja netom pobrali svu pamet svijeta vise preko neke stvari! Da vidimo "programera" kako ce odgovorit na najjednostavniji zadatak posto je ocigledno vise nego upucen u programiranje!

    A da evo nesto da ti pokazem sta je razlika u tom sto prosipas ako znas sve ce ti biti jasno! Posto si me pitao na pocetku jednog od postova da te citiram:"valjda mi je jasno da su pointer i pokazivac isto evo ti moj odgovor na to, posto znam da ti je ovo spansko selo nema smisla d ate davim sa obktno orijentisanim funkcijama!
    Razlika između reference i pokazivača
    Ja sam daleko od toga da sve znam sto se ti ce OOP, nit se hvalim, nit sma ikad temu i jednu na forumu oko programiranja postavio ali sigurno ne vrijedjam druge da bi se pokazao pametan pred drugima takle dakle smatram da ti ovo nece predstavljati problem.
    #include <iostream.h>

    void f1(int &);

    void main()
    {
    int a = 6;
    f1(a);

    cout << a;
    }

    void f1(int &u1) //ovo je referenca
    {
    u1++;
    cout << u1 << endl;
    }

    // zaključak: a == u1 #include <iostream.h>

    void f1(int *);

    void main()
    {
    int a = 6;
    f1(&a); //ovo NIJE referenca,
    //nego adresa od a
    cout << a;
    }

    void f1(int *u2)//samo pokazivač može primiti adresu
    {
    (*u2)++; //isto kao *u2=*u2+1;
    cout << u2 << endl; //ispuje se samo adresa od a
    cout << *u2 << endl; //ispuje se7
    }
    // zaključak: a == (*u2)

    U lijevom primjeru sa za varijablu a rezerviše prostor na nekoj slučajnoj memorijskoj lokaciji, pretpostavimo 0x106 (u stvarnosti su memorijske adrese 32 bitne). U memorijsku lokaciju 0x106 se pamti cijeli broj 6. Pri pozivu funkcije proslijeđuje se varijabla a koja se prima kao referenca u1. To znači da varijabla a iz funkcije main i varijabla u1 iz funkcije f1 dijeli isti memorijski prostor. Bilo koja promjena vrijednosti varijable u1 mijenjat će vrijednost varijable a.

    U desnom primjerom se također rezerviše memorijski prostor za varijablu a, ali se ovdje proslijeđuje adresa od varijable a (kao argumenat pri pozivu funkcije). Adresa varijable se u funkciju prima kao pokazivač u2. To znači da se za varijablu u2 rezerviše prostor na nekoj slučajnoj memoriskoj lokaciji (ova memorijska adresa nam nije bitna). Sadržaj varijable (pokazivača) u2 je memorijska adresa od varijable a, tj. 0x106.


    Napraviti program u kojem će te koristiti funkciju void zamjeni(int *p1, int *p2). Funkcija treba zamjeniti vrijednosti varijabli koji su proslijeđeni kao argumenti za poziv ove funkcije.

    - u funkciji main ćemo deklarisati dvije varijable tipa integer (a=5, b=6)
    o to znači da se na nekoj memorijskoj adresi (pretpostavimo 0x102) rezervizao prostor veličine jednog integera (npr. 4 bajta) i da se taj memorijski prostor u koji ćemo smjestit vrijednost 5 dodijelio varijabli a,
    o na isti način će se alocirati memorija u RAM-u za varijablu b (pretpostavimo 0x106), to se može grafički prikazati:

    - pošto funkcja zamjeni prima dva argumenta kao pokazivače (p1 i p2), pri pozivu ove funkcije moramo proslijediti kao prvi argument adresu neke varijeble (npr: &a) i kao drugi argument adresu neke varijable (npr: &b)
    o u main-u ćemo pozvati funkciju naredbom zamjeni(&a,&b);
    o sadržaj varijable (pokazivača) p1 će biti adresa varijable a, tj. 0x102
    o sadržaj varijable (pokazivača) p2 će biti adresa varijable b, tj. 0x106
    o varijabla (pokazivač) p1 ima takođe svoj memorijski prostor u kojem se nalazi adresa varijable a (pretpostavimo za a: 0x110, za b: 0x114), ali taj memorijski prostor pokazivača nam nije bitan


    - to znači da p1 pokazuje na a, dok p2 pokazuje na b, to možete zamisliti kao:



    o sa naredbom cout << &p1; ispisujemo memorijsku adresu varijable p1 (pokazivača) tj. 0x110
    o sa naredbom cout << p1; ispisujemo vrijednost varijable p1 (pokazivača) tj. u našem slučaju je to memorijska adresa varijable a (0x102)
    o sa naredbom cout << *p1; ispisujemo vrijednost sa one memorijske lokacije na koju pokazuje p1, tj. vrijednost 5
    o može se zaključiti da je *p1 == a i da je *p2 == b
    o u slučaju da smo trebali zamijeniti vrijednost varijabli a i b u funkciji main to bi činili na slijedeći način:
    int temp;
    temp = a;
    a = b;
    b = temp;

    - ako bi u funkciji zamjeni zamjenu varijabli činili na slijedeći način…
    int *temp; //pomoćni pokazivač
    temp = p1;
    p1 = p2;
    p2 = temp;

    - onda bi samo 'smjer' pokazivača promijenili, a ne vrijednosti varijabli a i b

    - zamijenu vrijednost varijabli a i b, činit ćemo na sličan način kao što bi to činili u funkciji main, ali umjesto a koristit ćemo *p1 i umjesto b koristit ćemo *p2:
    int temp; //sada ovo nije pokazivač
    temp = *p1;
    *p1 = *p2;
    *p2 = temp;

    - konačno, čitav program bi trebao izgledati ovako:
    #include <iostream>
    using namespace std;

    void zamjeni(int *p1, int *p2)
    {
    int temp;
    temp = *p1;
    *p1 = *p2;
    *p2 = temp;
    }

    void main()
    {
    int a = 5;
    int b = 6;

    zamjeni(&a,&b); //prosljeđujemo adrese varijabli a i b, ovo nije referenca

    cout << a << endl; // nova vrijednost je 6
    cout << b << endl; // nova vrijednost je 5
    }

    Obratite pažnju na prvi primjer sa pokazivačem u funkciji f2, gdje su korištene dodatne zagrade za (*u2)++. U tom slučaju bi se vrijednost na koji pokazivač pokazuje (neki integer) inkrementirala. Da smo koristili samo *u2++; to bi značilo da se vrijednost pokazivača (varijable) u2 inkrementira, tj. adresa će se povećati npr: sa 0x102 na 0x104 (za veličinu integera). Što znači da bi pokazivač u2 pokazivao na neku novu lokaciju. To može dovesti do fatalnih grešaka, jer operativni sistem ne bi dozvolio čitanje memorijske adrese koja možda nije dodijeljena za korištenje vašem programu.

    Prethodni zadatak bi se mogao i pomoću reference riješiti. Ali kod reference pri pozivu funkcije zamjeni nećemo prosljeđivati adrese od a i b nego samo a i b.


    #include <iostream>
    using namespace std;

    void zamjeni(int &r1, int &r2) // sad je ovo 'pass-by-reference'
    {
    int temp;
    temp = r1;
    r1 = r2;
    r2 = temp;
    }

    void main()
    {
    int a = 5;
    int b = 6;

    zamjeni(a,b);

    cout << a << endl; // nova vrijednost je 6
    cout << b << endl; // nova vrijednost je 5
    }
     
  8. BoLa

    BoLa Aktivista

    - Prof.Zeljko Juric ETF Sarajevo

    A volku kolicinu preseravanja ne vidjeh odavno. Pa da dam svoj doprinos, vjerovatno jedini jer nemam vremena da se flameam. Al vi nastavite ...
     
  9. Guest

    Guest Guest

    Meni je razlika izmedju pokazivaca i referenci sasvim jasna, ali nema veze, nek si ti to postao :)

    Cak i u ovome tekstu koji navodis ima gresaka. Na primjer, autor ocigledno nije upoznat sa cinjenicom da po zadnjem C++ standardu metoda main mora biti funkcija koja uvijek vraca vrijednost. Ne znam da li si ti ovo pisao, ali ako ti je ovo materijal sa fakulteta onda je stanje jos kriticnije :)

    Ja se time ne bih bas toliko hvalio (predpostavljam da je u pitanju FIT). Sudeci po nekim od testova sa FITa koje sam vidio (i uradio), nisu bili puno tezi od ovh banalnih primjera koje navodis :)

    Evoprimjera jednog malo ozbiljnijeg testa iz programiranja, mozda ti bude zanimljivo ;)

    Pogledaj sta ti je BoLa napisao u postu iznad - sasvim je u skladu sa svim sto od pocetka govorim.
    Ja stvarno nemam vise volje da se raspravljam, tvoj je stvar hoces li nesto prihvatiti ili ne. Ove stvari mozes naci u bilo kojoj knjizi o C++-u.
     
  10. MufID

    MufID Guest

    "Boli mene i bilo kojeg programera za Haskell."

    "Kad smo kod osnovnog gradiva ja polozio uup, prog 1, prog2-> OOP i softverski inzinjering u roku od godine dana, qler zna ide sa mnom na faks ho ho ho Cool"

    "cin i cout su skracenice od console in i console out i predstavljaju komande u doslovnom smislu rijeci za unos odnosno ispis podataka a objekte ni u kojem slucaju!"

    "To sto po internetu ces nac rijec object za cin i cout ne mozes prevoditi u doslovnom smislu ali to je vec druga prica."

    "Hajmo dalje, cin i cout se u nekim kompajlerima mogu bez ikakvih problema koristiti bez pozivanja predprocesorske naredbe #iostream.h kao i sve naporedne matematicke funkcije bez poziva #math.h headera, prema tome cin i cout nikako ne mogu biti objekti i ne lupetaj."

    "Objekat ima osobinu nasljedjivanja osobina od drugog objekta a to sto ti pricas i citas po internetu da bi ovde ispao pametan su ciste nebuloze."

    "il znas programirat 100% il se nemoj nikako ni bavit."

    "posto znam da ti je ovo spansko selo nema smisla d ate davim sa obktno orijentisanim funkcijama! "


    Genijalan si covece, crkoh od smeha. Dugo nisam vidio kako se n00b ovako prosipa :mrgreen:
     
  11. Dog_Father

    Dog_Father Moderator

    Ovom je vrijeme da se zakljuca. I nemoj slucajno da ko otvori temu da se ovo nastavi!
     
Thread Status:
Not open for further replies.