|
Programiranje Programski jezici, tehnike, alatke... |
|
Alatke vezane za temu | Vrste prikaza |
16.2.2013, 3:37 | #21 |
Veteran
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
|
Re: [Pascal] Pomoc
Treba svaku proveru jednakosti da okružiš zagradama (OR ima veći prioritet od provere jednakosti).
|
19.2.2013, 21:10 | #22 |
Član
Član od: 22.3.2011.
Lokacija: Geneva, Switzerland
Poruke: 232
Zahvalnice: 61
Zahvaljeno jedanput na jednoj poruci
|
Pokazivaci u Pascalu
Treba da pocnjem da radim sa njima, pa me interesuje sta su, cemu sluze..neki uvod o njima
|
19.2.2013, 21:30 | #23 |
Član
Član od: 22.11.2009.
Lokacija: Čačak
Poruke: 251
Zahvalnice: 63
Zahvaljeno 11 puta na 10 poruka
|
Re: Pokazivaci u Pascalu
Pascal ima pokazivače?
Bilo je pitanje u temi za c++, evo link ka postu onog ko je pitao, a objašnjenja u narednim postovima; samo pritisni u gornjem desnom uglu na link pored "tema:" da otvori celu temu. |
19.2.2013, 22:10 | #24 |
Veteran
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
|
Re: Pokazivaci u Pascalu
Kakva slučajnost, skoro sam imao potrebu da proučavam neki pascal kod sa pokazivačima. Poznato ti je da u Pascalu postoje tipovi kao što su Integer, Real, Longint, String. Pokazivač na Integer je ^Integer, pokazivač na Real je ^Real. Jedan program za primer
Kod:
program blabla; var broj : Integer; pbroj : ^Integer; //pointer na Integer begin broj := 256; pbroj := @broj; //uzimamo adresu broja i ubacujemo je u pointer writeln("Broj je: ", pbroj^); //dereferenciramo pointer end. Promenljiva pbroj je pokazivač. Ona sadrži memorijsku adresu. U programi mi uzimamo adresu druge promenljive i stavljamo je u pokazivač. U poslednjoj liniji stavljanjem kape posle imena pokazivača mi uzimamo vrednost koja s nalazi na adresi "na koju pokazivač pokazuje". O pokazivačima generalno bi trebalo da pročitaš na Internetu, ili u drugoj temi na forumu. U suštini je isto kao i u C-u, samo sa drugačijom sintaksom. Imaš i tutorijal i primere za Pascal na netu, samo guglaj. Na pokazivače se nadovezuje i dinamička heap memorija i strukture, a to ne mogu sad da objašnjavam. Bestidno ću ostaviti link ka tekstu koji sam ja napisao (nemam ja nikakvih prihoda od toga) http://viewsource.rs/c-sa-qt-bibliot...-promenljivih/ Ima segment o pokaivačima. Nema veze što je C++, to što tu piše se direktno prenosi na pascal, samo sa malo drugačijom sintaksom. Poslednja ispravka: ivan90BG (19.2.2013 u 22:20) |
5.3.2013, 21:21 | #25 |
Član
Član od: 22.3.2011.
Lokacija: Geneva, Switzerland
Poruke: 232
Zahvalnice: 61
Zahvaljeno jedanput na jednoj poruci
|
Re: Pokazivaci u Pascalu
Kod:
program prvi; type pok=^cvor; cvor=record broj:integer; adr:pok;end; var p,q:pok; n:integer; begin writeln(‘koliko el. Ima lista?’); read(n); p:=nil; while n>0 do begin new(q); q^.broj:=n; q^.adr:=p; p:=q; n:=n-1; end; while p<>nil do begin writeln(p^.broj); p:=p^.adr; end; end. Kod:
p:=nil; while n>0 do begin new(q); q^.broj:=n; q^.adr:=p; p:=q; n:=n-1; end; Poslednja ispravka: VojaM (6.3.2013 u 10:39) Razlog: prepravljeno u code tagove, da ne pretvara zagrade u smajlije |
6.3.2013, 1:31 | #26 |
Veteran
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
|
Re: Pokazivaci u Pascalu
Isto kod, samo sa malo razumljivijom imenima.
Kod:
program lista; type pcvor = ^cvor; cvor = record broj : integer; sledeci : pcvor; end; var prvi, drugi, iter : pcvor; n : integer; begin writeln('koliko el. Ima lista?'); read(n); drugi := nil; while n>0 do begin new(prvi); prvi^.broj := n; prvi^.sledeci := drugi; drugi := prvi; n := n-1; end; iter := prvi; while iter<>nil do begin writeln(iter^.broj); iter := iter^.sled; end; end. Najbolje ti je da nacrtaš na papiru. Pokazivače nacrtaj kao kružiće, a čvor kao kvadrat (on će u sebi imati kružić kao pokazivač na sledeći). Pa prati kod i crtaj, i to olovkom, pa briši i prepravljaj, ako kod tako kaže. EDIT: Ovako nekako Poslednja ispravka: ivan90BG (6.3.2013 u 18:17) |
Sledeći korisnik se zahvaljuje korisniku ivan90BG na korisnoj poruci: | ||
FakeDeath (6.3.2013) |
9.4.2013, 20:51 | #27 |
Član
Član od: 22.3.2011.
Lokacija: Geneva, Switzerland
Poruke: 232
Zahvalnice: 61
Zahvaljeno jedanput na jednoj poruci
|
Re: Pokazivaci u Pascalu
Kako da ubacim el. na odredjenu poziciju u listu(u sredini). Ne znam kako da je povezem, uvek mi se gubi veza sa dalom liste pre tog mesta.
|
10.4.2013, 0:02 | #28 |
Veteran
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
|
Re: Pokazivaci u Pascalu
Ako ti držiš pokazivače na prvi i posledni element, a hoćeš da dodaš novi negde u listu, onda moraš da imaš i treći pokazivač na trenutni element koji koritiš za kretanje kroz listu od početka do mesta ubacivanja. Pretpostavljam da si koristio pokazivač na prvi za kretanje pa zato gubiš elemente tokom kretanja.
|
28.5.2013, 11:33 | #29 |
Starosedelac
Član od: 5.6.2008.
Poruke: 2.163
Zahvalnice: 993
Zahvaljeno 122 puta na 98 poruka
|
Re: C programiranje
moze li neko da mi objasni "prosledjivanje po referenci" i "prosledjivanje po vrednosti"?
vezano za paskal, ne za C though. TYPE niz = array [1..max] of integer; //npr npr. kad imam proceduru za ucitavanje niza A: Kod:
PROCEDURE ucitaj (VAR A: niz; VAR n: integer); Kod:
PROCEDURE ispisi (a:niz; n:integer); //nema VAR Kod:
PROCEDURE obrada (a, b:niz; VAR C:niz; n:integer); Hvala SOLVED: mislim da sam ukapirao. Kad stoji VAR uz promenljivu, u glavnom programu nije bitno da li sam u Proceduri niz nazvao A ili W, tj. ono sto stoji u proceduri 'VAR a' sluzi samo kao "model" za ucitavanje bilo kog niza u glavnom programu. Kad je prosledjivanje po vrednosti (npr. ispis niza) bitno je da se ispisu konkretne vrednosti niza. Da li je ovo tacno ili sam izlupao nesto da mu dam smisao? Poslednja ispravka: virtuoz pavle (28.5.2013 u 12:04) |
28.5.2013, 14:42 | #30 |
Član
Član od: 8.12.2007.
Poruke: 75
Zahvalnice: 22
Zahvaljeno 7 puta na 3 poruka
|
Re: C programiranje
U prvoj proceduri ti saljes Var ispred promeniljivih zato sto hoces konkretno u proceduri ucitaj da menjas nesto u tom nizu i da sacuvas vrednost za n. Da ti ne stoji var,ako posle posaljes neki niz i neki intiger npr n iz glavnog programa kada se zavrsi procedura, u glavnom program taj niz nece da bude promenjen,a takodje nece da se sacuva to n koje se poslao. Jer sve promenljive u procedurama i funkcijama postoje dok postoji funckija odnostno procedura. Cim zavrse sa radom promenljive u njima se brisu iz memorije. Imena u zagradama nisu bitna,samo je bitno da navedes kojeg su tipa i da li ces da stavih var ispred njih ili ne. U proceduri ispisi ne mora da stoji var,zato sto ces ti da posaljes niz i duzinu niza,on ce da istampa taj niz i to je to,nece nista da se menja u tom nizu. U zadnjoj proceduri saljes dva niza a i b koje neces da menjas,vec samo da koristis informacije iz njih dok ces nizu c nesto da radis i zato opet stoji var,i saljes duzinu niza koju neces da menjas i zato ti ne treba var.
Nadam se da je barem malo jasnije |
Sledeći korisnik se zahvaljuje korisniku Laki00 na korisnoj poruci: | ||
virtuoz pavle (28.5.2013) |
1.6.2013, 16:49 | #31 |
Starosedelac
Član od: 5.6.2008.
Poruke: 2.163
Zahvalnice: 993
Zahvaljeno 122 puta na 98 poruka
|
Re: [Pascal] Pomoc
Jednostruko ulancana lista:
Kod:
TYPE pelem = ^elem; elem = RECORD broj: real; sled: pelem; END; PROCEDURE dodaj(VAR lista: pelem; broj:real); VAR novi, tek: pelem; BEGIN new(novi); novi^.broj:=broj; IF lista = NIL THEN lista:=novi ELSE BEGIN tek:=lista; WHILE tek^.sled<>NIL DO tek:=tek^.sled; tek^.sled:=novi; END; END; Evo moje interpretacije koda: new(novi) stvara nov pokazivac. novi^.info:=broj //ono na sta ukazuje pokazivac novi.info (ovo .info je zbog TYPE RECORD) ce biti uzeti vrednost broja koji je tipa REAL; novi^.sled:=NIL //pokazivac novi^.sled sada pokazuje na binarnu nulu. IF lista = NIL THEN lista := novi; //ako pokazivac lista tipa pelem pokazuje na nulu, to znaci da lista nema elemenata, zato sada lista postaje novi. ELSE BEGIN grana je u slucaju da vec postoji element u listi, tj. da lista nije na pocetku. sad vec ne kapiram, sta uopste znaci TEK (verovatno tekuci?). Uglavnom, da bi se ucitala lista treba da postoje tri pokazivaca i to: prethodni (ukazuje na prethodni element), sadasnji i sledeci. Ako znate za neku literaturu dostupnu na internetu, javite! Hvala Poslednja ispravka: virtuoz pavle (1.6.2013 u 16:57) |
1.6.2013, 17:27 | #32 |
Deo inventara foruma
|
Re: Pokazivaci u Pascalu
http://www.youtube.com/watch?v=o5wJkJJpKtM
Ovo vazi za sve jednostruko spregnute liste, samo je ovde radjeno u C++ |
Sledeći korisnik se zahvaljuje korisniku NIx Car na korisnoj poruci: | ||
virtuoz pavle (1.6.2013) |
1.6.2013, 18:57 | #33 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
|
Re: Pokazivaci u Pascalu
Nabavi knjigu "Algoritmi i strukture podataka", valjaće ti.
|
Sledeći korisnik se zahvaljuje korisniku voodoo_ na korisnoj poruci: | ||
virtuoz pavle (1.6.2013) |
1.6.2013, 19:30 | #34 |
Starosedelac
Član od: 5.6.2008.
Poruke: 2.163
Zahvalnice: 993
Zahvaljeno 122 puta na 98 poruka
|
Re: Pokazivaci u Pascalu
Hvala puno! otvorio si mi oci, nasao sam sve u njoj! imao sam je vec, dobio u kompletu knjiga za prvu godinu ETF-a. Nikad mi nije ni palo na pamet da je otvorim, mislio sam da je za neku drugu godinu...vrlo glupavo sa moje strane.
|
1.6.2013, 20:50 | #35 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
|
Re: Pokazivaci u Pascalu
Pa taj predmet i jeste bio na drugoj godini, makar na RTI, ne znam kako je sad
|
17.7.2013, 10:01 | #36 |
Novi član
Član od: 9.4.2012.
Poruke: 12
Zahvalnice: 1
Zahvaljeno 0 puta na 0 poruka
|
Pascal greska u kodu
Pozdrav, poceo sam da ucim pomalo pascal, prvenstveno jer me interesuje programiranje a od neceg mora da se pocne
Elem, nasao sam neki sajt sa lekcijama, sve je fino objasnjeno ali neki delovi primera kodova bas i ne rade. Sa ovim se bakcem celo celcato jutro, ajde ako neko moze da mi objasni sta je ovde problem: Kod:
program project1; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads,Crt; {$ENDIF}{$ENDIF} Classes { you can add units after this }; Var SizeA, sizeB : Real; YN : Char; unitS : String[2]; Function PythagorasFunc(A:Real; B:Real) : Real; {The pythagoras theorem} Begin PythagorasFunc := SQRT(A*A + B*B); {Output: Assign the procedure name to the value. If you forget to assign the function to the value, you will get a trash value from the memory} End; Begin Repeat Writeln; Write('Enter the size of side A : '); Readln(sizeA); Write('Enter the size of side B : '); Readln(sizeB); Repeat Write('metres or centimetres? Enter : [m or cm] '); Readln(unitS); Until (unitS = 'm') or (unitS = 'cm'); Writeln(PythagorasFunc(sizeA,sizeB),' ',unitS); Writeln; Write('Repeat? '); YN := Readkey; Until (YN in ['N','n']); End. Neko? Poslednja ispravka: Andross (1.9.2013 u 16:39) |
17.7.2013, 10:32 | #37 |
Član
Član od: 15.10.2007.
Lokacija: Novi Beograd
Poruke: 145
Zahvalnice: 19
Zahvaljeno 4 puta na 4 poruka
|
Re: Pascal greska u kodu
Ja sam testirao tvoj kod preko online pascal compilera. Iako moj nivo paskala nije kao ovaj ovde, moja pretpostavka je da ova linija
krije gresku koju trazis. Kod:
Until (YN in ['N','n']); |
17.7.2013, 11:09 | #38 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
|
Re: Pascal greska u kodu
Tamo gore u "uses" izvuci "crt" da bude van ifdef-ova, jer čini mi se da ovo puštaš na Windowsu, a onda "crt" jedinica neće biti uključena u linkovanje jer ifdef uslov nije prošao, a ReadKey je deo crt-a.
Dakle uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes, Crt; |
19.7.2013, 16:36 | #39 |
Novi član
Član od: 9.4.2012.
Poruke: 12
Zahvalnice: 1
Zahvaljeno 0 puta na 0 poruka
|
Re: Pascal greska u kodu
Hvala voodoo
|
30.8.2013, 1:17 | #40 |
Novi član
Član od: 9.4.2012.
Poruke: 12
Zahvalnice: 1
Zahvaljeno 0 puta na 0 poruka
|
Paskal i MS Access pomoc
Imam problem, Lazarus mi prijavljuje gresku koju ne znam kako da ispravim, a bas se trudim...
Kod: Kod:
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, odbcconn, sqldb, db, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, DBGrids, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Datasource1: TDatasource; DBGrid1: TDBGrid; Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Memo1: TMemo; ODBCConnection1: TODBCConnection; SQLQuery1: TSQLQuery; SQLTransaction1: TSQLTransaction; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin ODBCConnection1.DatabaseName:='LazConnect'; ODBCConnection1.UserName:='Admin'; ODBCConnection1.Transaction:=SQLTransaction1; SQLTransaction1.Database:=ODBCConnection1; SQLQuery1.Database:=ODBCConnection1; SQLQuery1.Transaction:=SQLTransaction1; SQLQuery1.UsePrimaryKeyAsKey:=False; SQLQuery1.SQL.Text:='SELECT * FROM Student'; Datasource1.dataset:=SQLQuery1; DBGrid1.DataSource:=DataSource1; ODBCConnection1.Open; If ODBCConnection1.Connected then begin Label1.caption:='connected -great'; end; SQLQuery1.open; end; procedure TForm1.Button2Click(Sender: TObject); begin SQLQuery1.Close; SQLQuery1.SQL.text:=edit1.text; SQLQuery1.Open; end; procedure TForm1.Button3Click(Sender: TObject); begin //Not now needed - we will use SQLQuery1 instead //SQLTransaction1.commit; //SQLTransaction1.StartTransaction; //ODBCConnection1.ExecuteDirect(edit2.text); //SQLTransaction1.commit; SQLQuery1.Close; SQLQuery1.SQL.text:=edit1.text; SQLQuery1.ExecSQL; end; procedure TForm1.Button4Click(Sender: TObject); begin SQLQuery1.Close SQLQuery1.SQL.Text:='Select * FROM Student'; SQLQuery1.Open; while not SQLQuery1.Eof do begin memo1.lines.add( ' ID: ' + SQLQuery1.FieldByName('StudentID').AsString + ' First name: ' + SQLQuery1.FieldByName('First').AsString + ' Second name: ' + SQLQuery1.FieldByName('Second').AsString) ; SQLQuery1.Next; end; end; initialization {$I unit1.lrs} end. unit1.pas(94,1) Fatal: Syntax error, ";" expected but "identifier SQLQUERY1" found Da napomenem, sve sto treba da bude u formi je u formi.. Neko? Poslednja ispravka: Andross (1.9.2013 u 16:38) |
Bookmarks sajtovi |
|
|
Slične teme | ||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
Procena računara | alien | Šta da kupim? | 6942 | 17.12.2023 10:28 |
Pomoc oko izbora plottera | braca86 | Grafički softver i radovi | 0 | 30.3.2009 17:51 |
Potrebna pomoc oko High End konfiguracije - Xtreme Gaming - | Mandrak | ŠDK - Osnovne komponente | 2 | 27.8.2008 9:30 |
Molim za pomoc | sweps | Osnovne komponente | 15 | 31.5.2008 2:21 |
Treba mi pomoc oko konfiguracije | polarnimeda | Šta da kupim? | 8 | 10.11.2005 19:00 |