271
Turbo Pascal
-
kuks #71 Help pls!!!
Írtam egy programot a TP 7-be, és meg akarom nyitni a start futtatással írja hogy kiválasztja a netes listából de nem csinál többet. Melyik progival tudom megtekinteni? Hogy lehet hozzá instalt csinálni? -
#70 de a readkey kevesebb karakter, gyorsabban benntvan
hogy csakazért is én nyerjek :P -
#69 Readkey nem kell, a Keypressed a Turbo Pascal 1.0-ás verziójától van benne a CRT unitban (így a uses crt szükséges, akárcsak a Readkey függvényhez). Itt ajánlom figyelmetekbe a CRT Unitról szóló rész áttekintését, vagy itt szétnézni. -
#68 elejére minden var elé:
uses crt;
progi végére de még end. elé:
ReadKey; -
#67 "Ha megírok egy programot az miért csak egy pillanatig van a képernyőn?"
Ha rendesen lefordítod (Compile/Destination:Disk legyen, majd Compile/Compile), és parancssorból (Start menű/Futtatásba WinXP esetén írd be: cmd vagy Win9x/WiME esetén: command) indítod el a lefordított programot, akkor rendesen megmarad. Egyébként a vezérlés visszakerűl az őt meghívó programnak.
"Olyat lehet hogy addig nem lép vssza míg meg nem nyomok valamit?"
A programod legvégébe írd be az alábbi sorokat:
Repeat
Until Keypressed; -
kuks #66 Hali!
Ha megírok egy programot az miért csak egy pillanatig van a képernyőn? Mit kell beírni vagy mit kell csinálni hogy korlátlan ideig legyen a képernyőn? Olyat lehet hogy addig nem lép vssza míg meg nem nyomok valamit? Előre is köszi! -
#65 hát, fogadjunk hogy erre is azt fogja mondani, hogy tele van vírussal...
egyébként konzultáltunk a t.vezető-vel és a gizdával, hogy elérjük ezt a mondatot:
"hát jólvan, megpróbálok csinálni valamit"
... -
#64 Mindenképpen konzultálj a tanfolyam vezetőjével.
Az ő érdeke az, hogy sikeresen megtanítsa a programozást, és hogy a megírt programokat ki is tudjátok próbálni a gépeken - ha ez akadályba ütközik, erre megoldást kell találni (vagy a TP patchelése, vagy Freepascal beszerzése révén).
"mi lenne, ha kiállná elé te?"
Irányítsd ide azt a rendszergazdát. Szerintem vagyunk itt elegen ahhoz, hogy a jó cél érdekében (egy iskolában rendesen tudjátok használni a gépeket, a programozást rendesen lehessen oktatni), jobb belátásra bírjuk. -
#63 mi lenne, ha kiállná elé te? nem olyan egyszerű ezzel :D de holnap megpróbálok csinálni valamit... -
#62 "hogy az tcmd-t is alig akart felengedni"
Mondjuk megértem a rendszergazdát is: ha crackelt tcmd-t akartok felrakni a gépre akkor könnyen rosszul járhat (ha a BSA felkeresi az iskolátokat, őt fogják elővenni, és valószínűleg az iskola vezetősége képes rákenni az egész ügyet).
A jogi dolgokról bővebben itt olvashattok (A Total Commander shareware - tehát törés nélkűl szabadon használható, a Turbo Pascal 7 kereskedelmi termék, a [url=http://community.borland.com/article/0,1410,20803,00.html]Turbo Pascal 5.5[url] freeware, a FreePascal is GPL licenszű - szóval az is ingyenesen használható).
"merthogy tele van vírussal"
Ha a hivatalos oldalról töltitek le a programot (Total commander esetén ez a ), nem töritek fel a korlátját, akkor elvileg nem kellene lenne vírusnak (spyware-nek, és egyéb károkozónak) benne lennie (vannak olyan programok amelyben alapból vannak: ilyen például a BSPlayer).
Ha mutat nektek egy releváns oldalt, egy vírusírtó által kreált log-ot, hogy a hivatalos oldalról letöltött programban vírus/spyware/egyéb károkozó van, akkor természetesen igaza lehet. -
#61 őszintén szólva pont ugyanezt próbáltuk, de ő annyira fos (má' elnézést :P), hogy az tcmd-t is alig akart felengedni, merthogy tele van vírussal. ugyanezt mondta erre is... -
#60 De előtte mindenképpen teszteld, hogy rendesen működik-e a patch, és hogy Turbo Pascal 7.01 (ellenörzése: Help/About menűpont) van a gépeken!
Vagy esetleg javaslom a FreePascal beszerzését. Windows XP-n fut, ingyenes, és a tanfolyamban (valószínűleg nem kell túlságosan TP specifikus dolgokat tanulni) használható eszköz. -
#59 Nos ebben az esetben a következő dolgot kell csinálni:
1. Odamész a rendszergazdához (mellesleg megkéred a tanfolyam vezetőjét, hogy jöjjön veled).
2. Megmutatod neki a Borland hivatalos oldalát, és onnan letöltöd (a kérdőívnek megadsz kamu adatokat) a patch-et.
3. Elmagyarázod a rendszergazdának hogy: "Kedves rendszergazda úr/hölgy! Nekünk tanfolyamon szükségünk van a Turbo Pascalra. Viszont ezeken a gépeken a lefordított programok 200-as futási hibával lefagynak. Mint a Borland hivatalos oldalán látható erre van megoldás. Tisztelettel megkérnénk önt, hogy a tanfolyam sikeressége érdekében telepítsük/telepítse fel a gépekre. Mivel ez a patch hivatalos oldalról származik, ezért a rendszerre nem jelent veszélyt."
4. Ha erre nem hajlandó, akkor hivatkozz a tanfolyamvezetőnek (na erre kell a tanfolyamvezető) arra, hogy ezzel a nem éppen konstruktív lépéssel a rendszergazda hátráltatja a tanfolyam sikerességét - ezáltal a tanfolyamvezető nem tudja eredményesen megtartani az órákat - így a sulitok nem tudja elérni a kitűzött célt (hogy ti okosodjatok). -
#58 no jó ezt már én is megtaláltam, csak ezt suliba nem lehet felrakni mer a hülye rendszergizda nem engedi, holott nekünk tanfolyamon kéne... :P -
#57 Crt unit patch kell, keress rá, tppatch néven millió helyen fent van.
-
#56 Turbo Pascalban programok javítása, mely a Pentium 2 - vagy nagyobb � processzor esetén fordul elő. A hiba - run time error 200 at xxxx:xxxx � üzenettel jelentkezik.
Vagy lásd itt. -
#55 üdv
van valami gáz vele, mert akármilyen progit akarok vele futtatni, 200-as hibát ad. tesztelésen is OK, én is látom hogy OK (vazze egy write az egész :P)
szóval valami 5let? -
#54 Ha értelmesebben fogalmaznál, talán még válaszolni is lehetne...
-
#53 while szerintem -
Balikaaa #52 hi
megtudnátok mondani hogy hogyan lehet egyfor ciklust olyanra "állítani", hogy addig amíg.
az már meg van hogy hogy kell 1-től integer-ig .... -
DirtyPio #51 Kosz. -
#50 Mi nem világos belőle? Egyszerűen szólva olyan függvényről/eljárásról van szó, ami önmagát hívja, majd a megfelelő feltételek esetén teljesen, vagy részben visszabomlik (erről a programozónak kell gondoskodnia).
Többnyire olyan, jórészt ismétlődő utasításokat tartalmazó feladatok során szokták használni, amikor egymásba ágyazott, vagy fa-struktúrájú, vagy azonos szabály szerint változó elemhalmazon kell végiggyalogolni. Ilyen pl. a könyvtárszerkezet (pl. fájlkeresés, könyvtárméretek összegzése, stb.), vagy valamilyen gráf (pl. útvonalháló) bejárása, vagy hierarchikus modellben felépülő adatok összegzése (pl. napi, havi, negyedéves, éves pénzügyi összegzések), vagy egy egyszerű faktoriális számítás.
A rekurzió azt használja ki, hogy a modern nyelvekben az eljáráshívás során átadott paraméterek, és az eljáráson belül használt lokális változók (kevés kivétellel, de ez most lényegtelen) mind külön memóriaterületet foglalnak le, és az eljárás végén ezek felszabadulnak. Rekurzív hívás esetén mindig új adatterület képződik (amekkora szintű, mélységű a hívás, annyiszor), a visszalépegetés során pedig ez felszabadul, és az előző hívás pillanatnyi értékei újra rendelkezésre állnak.
A rekurzió ezen előnye a hátránya is: ha nem tud "kimászni" az egymásba hívásokból, az jó esetben időlimittel, mélységi korláttal, vagy memória elfogyással hibát produkál, vagy elszáll, rossz esetben végtelen ciklusba kerül, amin csak a kívülről történő kilövés segíthet.
Kb. ennyi. :)
-
DirtyPio #49 Hi ha akadna egy ember, aki elmagyarazna nekem a rekurziot, azaz azt, hogy hogy mukodik ugy holnap estig barmikor, annak nagyon orulnek. -
#48 Valakinek van működö progija( 7.5) XP-re? THX -
KaBuTo666 #47 honan ajánlatos letölteni a turbo pascal 7.0 magyart? -
skristof #46 sikerült megoldani, köszönöm a helpet, és a magyarázatot -
skristof #45 nsh igy már kicsit érthetőbb, mint amit leirtam 3 vázlatpontban :d
köszi a segítséget, még kínlodom vele akkor -
#44 Nem tudom, pontosan mi a kérdés, de ha a beszúró és a buborék közötti különbség érdekel, akkor tekintsd úgy, hogy a buborék a beszúró egy változata.
A buborék során minden elempáron végigmegyünk, és ha a páros 2. tagja kisebb, mint az 1., akkor megcseréljük őket. Ezt (alapesetben) annyiszor ismételjük, mint az elemek száma-1, és minden ciklus az előző ciklus vége-1 elemig tart (azért alapesetben, mert figyelhetjük, hogy egy teljes ciklus alatt volt-e csere, és ha nem, akkor nem kell a többit megcsinálni). Azért "buborék", mert a nagyobb elemek úgy vándorolnak a tömb vége felé, mint a pohárban a buborék. :)
A beszúró hasonlít ehhez, de kicsit bonyolultabb. Vesszük sorban az elemeket a másodiktól kezdve (n), és az 1..n-1 sorban megnézzük, hová illik. Ha mindegyiknél nagyobb, akkor a helyén marad, és vesszük a következő elemet. Ha beillik valahová, akkor beszúrjuk abba a pozícióba, az utána következő elemeket (n-1-ig) pedig egy pozícióval arrébb tesszük. Így a rendezés egy menetben megtörténik, de az odébbtologatások miatt akár tovább is tarthat, mint egy buborékrendezés. Amit te írtál a #40-ben a beszuro-ban az nem ez. :)
-
skristof #43 köszi, én is erre gondoltam, de sajna énsem tudom a fgv.-t
nah akkor utánakeresek
a másik problémára nem tudod mi lehet a megoldás? ugyértem h az inputot is generálom mint látod, 1000db véletlen számot
azonban vannak egyformák. azért kell (relative) sok szám, h a sorbarendezés vmivel tovább tartson. ez leginkább majd az iskolai gépeken lesz érzékelhető :D szóval vannak egyformák is, melyeket nem akar rendezni. de van amiket egymás mögé rak, azonban van, mikor otthagyja a helyén..
erre esetleg vmi megoldás? :S -
#42 Hát, ilyesmi feladatra általában bonyolultabb időzítő eljárásokat használnak, de sztem neked bőven elég, ha az indításkor lekérdezed a pillanatnyi időt, a végén is, és a kettőből kiszámítod az eltelt időt.
Fejből most nem tudom, melyik az a TPascal-os függvény, Delphi-ben többnyire a GetTime()-t használom (ha esetleg Delphi-s konzolos alkalmazásként írod). Bár nagyon kis idők mérésére azt sem használható.
-
skristof #41 ooo bassza meg.. az [ig ket átalakitotta.. sry
UBB-t elfelejtettem.. :s mind1 azok ottvannak :) -
skristof #40 sziasztok
suliba olyan feladatot kaptam h 3 naiv rendezési elv (kiválasztó, beszúró, buborék) futásidejét kellene összehasonlitani! ezt hogyan tudom megoldani?
mellesleg vki érthetően a tudtomra adná a beszuro illetve buborék közti különbséget?
arra is help kéne, h ha van már egy elem, akkor az ugyanakkorát miért nem ill miért nem mindig teszi mögé?
az eddig kész forrás:
program RENDEZES;
uses crt;
var
infile : text;
tomb : array[1..1000] of integer;
procedure make_input;
var
h,i : integer;
begin
assign(infile,'input.dat');
rewrite(infile);
i:=1; h:=0;
for i:=1 to 1000 do begin
h:=random(10000);
writeln(infile,h);
end;
close(infile);
writeln('Az input file elkeszult!');
end;
procedure beolvas;
var
i : integer;
begin
assign(infile,'input.dat');
reset(infile);
i:=0;
while not eof(infile) do begin
inc(i);
readln(infile,tomb[i]);
end;
close(infile);
writeln('Az adatok a tombbe helyezve!');
end;
procedure kivalaszto;
var
h, i, min, temp : integer;
outfile : text;
begin
i:=0; h:=0;
for i:=1 to 999 do begin
min:=tomb[i];
for h:=1 to 1000 do begin
if tomb[h]>min then
begin
temp:=min;
min:=tomb[h];
tomb[h]:=temp;
end;
end;
end;
i:=0;
assign(outfile,'output_kivalaszto.dat');
rewrite(outfile);
for i:=1 to 1000 do begin
writeln(outfile,tomb[i]);
end;
close(outfile);
writeln('Kivalaszto rendezes sikeres, az output letrehozva!');
end;
procedure beszuro;
var
h, i, temp : integer;
outfile : text;
begin
i:=0; h:=0;
for i:=1 to 1000 do begin
h:=i+1;
if tomb[h]<tomb[i] then
begin
temp:=tomb[i];
tomb[i]:=tomb[h];
tomb[h]:=temp;
end;
end;
i:=0;
assign(outfile,'output_beszuro.dat');
rewrite(outfile);
for i:=1 to 1000 do begin
writeln(outfile,tomb[i]);
end;
close(outfile);
writeln('Beszuro rendezes sikeres, az output letrehozva!');
end;
begin
make_input;
beolvas;
kivalaszto;
beolvas;
beszuro;
end.
-
#39 Igen, az length(), csak néha keverem a prog. nyelveket. :)
-
thhommy #38 köszi:) -
xtimer #37 ja amugy köszi ;) -
xtimer #36 minden kisbetűt nagybetűre cserél
for i:=1 to len(beolv_sor) do if beolv_sor[ i ] in ['a'..'z'] then beolv_sor[ i ]:=upcase(beolv_sor [ i ]);
itt a "len(beolv_sor)" az length(beolv_sor) akar lenni ugye? -
#35 Csak az elvi megoldások, hibakezelés és speciális esetek (pl. szöveg a sor elején/végén) nélkül, a konkrét dolgokat programozd le magad:
az összes *-ot, + jelre cseréli
repeat i:=pos('*', beolv_sor); if i>0 then beolv_sor[ i ]:='+'; until i>0;
minden kisbetűt nagybetűre cserél
for i:=1 to len(beolv_sor) do if beolv_sor[ i ] in ['a'..'z'] then beolv_sor[ i ]:=upcase(beolv_sor [ i ]);
balra igazítja a sort
while beolv_sor[1]=' ' do beolv_sor:=copy(beolv_sor, 2, len(beolv_sor)-1);
minden olyan A-t amely szóköz után van azt le kell törölni
repeat i:=pos(' A', beolv_sor); if i>0 then beolv_sor:=copy(beolv_sor, 1, i) + copy(beolv_sor, i+2, len(beolv_sor)-i-1); until i>0;
minden 'szép' szót 'gyönyörű'-re kell cserélni
repeat i:=pos('szép', beolv_sor); if i>0 then beolv_sor:=copy(beolv_sor, 1, i+1) + 'gyönyörű' + copy(beolv_sor, i+4, len(beolv_sor)-i-3); until i>0;
-
xtimer #34 és van olyan ember aki az én problémámat tudja orvosolni? -
#33 Nézd meg a prog.hu Pascal iskoláját.
Hasonló, bár nem Turbo Pascal: Programozzunk Delphi-ben. -
thhommy #32 jolvan köszönöm esetleg vki olyan ember aki gondolja hogyha ideirok akkor valószinüleg nem könyv formában szeretném?