Új hozzászólás Aktív témák
-
ViragL
tag
válasz
VladimirR #1397 üzenetére
1. Nem jelentettem ki, ott figyel a kérdőjel a sor végén. Azért a szelekciokon es iteraciokon kivül van még néhány apróság amit forráskódbol elég nehéz kibogarászni. Szerintem, pl nem a forráskód nézegetés a legjobb módszer a paraméterátadás, a hatáskörkezelés megértésésre, esetleg az operátorok precedenciájának megtanulásásra. Szerintem.
2. te mondtad, hogy helpből tanulsz. Ismerem azt a könyvet, tény, hogy nagyon jól használható.
4, az nc után volt egy mod, egy (egyébként elég xar) példát eröltettem oda, (hirtelen jobb ötletem nem volt, és az idő sürgetett) remélem segít megvilágítani, hogy mire is gondoltam. -
ViragL
tag
Nos igen, a definiálás és az elmagyarázás két külön dolog. De, ha adunk egy hibás/hiányos definiciót és azon próbáljuk elmagyarázni, hogy az egyébként hibásan/hiányosan definiált eszköznek mit is kellene csinálnia, nos az nem nagy segítség. Jószándék ide vagy oda.
Visszaolvasva a hozzászólásomat, valóban nem szerencsés a fogalmazás, az ''egyetemi'' szó elvonja mindenki figyelmét a ''(lektorált!)'' megjegyzésröl, holott nem véletlenül írtam oda. Arra akartam utalni, hogy ha nem könyvböl, hanem jegyzetből tanul az ember és nem ismeri a szerzőt, akkor kezelje a jegyzetet fenntartásokkal. Ennél egy fokkal jobb, ha lektorálta valaki,
(akinek teszem azt, neve van a szakmában), az nyújt némi biztosnágot, abból a szempontból, hogy helytállóak a benne leírt dolgok. Sok íromény megtalálható a nete a témában, van köztük néhány. Nagyon kellemetlen, ha egy jegyzetről nem derül ki elég hamar, hogy használhatatlan.
Kérdésedre válaszolva: Igen, összefutottam egy két egyetemi jegyzettel. A linkelt definició előtt csak meghalyolni tudok, látom el vagytok ''kényeztetve'' az ELTE-n. Nos, én inkább Juhász István Programozás 1 c jegyzetét [link]javasolnám, ha konkrét jegyzetet akarnék ajánlani. Ez kicsit másjellegű, mint amit te linkeltél és talán inkább alklamas egy konkrét programozási nyelv elsajátításához szükséges elméleti háttér megteremtéséhez..
A kézzel-lábbal magyarázós módszer érdekes, sokszor az eredménye is. De azt el kell ismernem, hogy az is egy megoldás és szükség van rá, de nem mint elsődleges tanítási módszer. -
VladimirR
nagyúr
1: altalanossagban kijelentetted (pont) - megcafoltam (pont) - egyebkent igen, kezdonek is max az adattipusok, szelekciok es iteraciok erejeig javaslom a konyvet
2: nem is kell, hogy megtanitson - fogjuk ram, hogy tudok programozni (egyebkent igen sokat tanultam angster erzsebet turbo pascal a..z konyvebol, ami gyakorlatlag a pascal _sugo_janak forditasa)
4: milyen nc? te allitottal hulyesegeket
Jester01: ha mar menozunk, bemasoljam milyen jatekot irtam reszegen? (masnap is mukodott ;p)
[Szerkesztve] -
ViragL
tag
válasz
VladimirR #1392 üzenetére
1. Kicsit elkanyarodtunk az eredeti témátol, x év programozás után én is rászorulok, hogy kódbol tanuljak, ez egy szint után már természetes. (teszem hozzá: szomorú) De eredetileg arrol szólt a vita, ha nevezhetem így, hogy kezdőként mi a megfelelő tanulási módszer. Teszem fel a kérdést, te kezdőnek azt javaslod, hogy vegyen elő x darab forráskódot és abbol próbálja felfogni a dolgokat (ja és a könyveket hanyagolja, mert minek a könyv, ha van kód)?
2. a help pont arra való amit leírtál, kikeresni a szükséges eszközöket, hogy ne kelljen mindent fejben tartani. De a help nem fog megtanítani programozni, az nem arra való.
4.nc MOD: esetleg annyit, hogy próbálj meg egy ovodásnak elmagyarázni a prímszámokat, simán menni fog, pláne, ha ismeri a számokat, azz osztást és a legnagyobb közös osztó fogalmát. Jo, ez kicsit ferdites, de talán megvilágítja mie gondoltam.
[Szerkesztve] -
Sárpac
nagyúr
Néhány részlet réges régi pascalos koromból
''Procedure *****;assembler;
asm
push ds
push ax
push bx
push cx
mov ax,seg ktb
mov ds,ax
xor bh,bh
mov cl,bh
in al,60h
mov bl,al
and bl,7fh
shl al,1
cmc
adc cl,00
mov [bx+offset ktb],cl
in al,61h
mov ah,al
or al,80h
out 61h,al
mov al,ah
nop
nop
nop
out 61h,al
cli
mov al,20h
out 20h,al
sti
pop cx
pop bx
pop ax
pop ds
iret
end;
''
Na mi ez? -
-
ViragL
tag
Előszöris gartulálok az ORSZÁGOS szakmai tanulmányi verseny döntőjén informatika alapismeretek tantárgyból elért 6. helyezésedhez, az szép.
De, ha ilyen versenyen indultál, akkor gondolom tanítottak neked az iskolában programozást (is). Nos , szerintem, aközött, hogy te olvasod a szakirodalmat és aközött, hogy egy tanár magyarázza el neked nincs nagy külömbség. A tanár nyilván használt szakirodalmat és az abból származó ismereteket osztotta meg veletek. Követte az irodalmat és kitért minden lényeges részre, pontosan definiált mindent és nem annyival intézte el pl. a ciklus fogalmát mint itt a topikban, mert ha így lenne nem lenne a fent említett helyezésed.
Én sem kötekszem, csak szeretem a pontosságot és a hatékonyságot.
Még néhány apróság:
- forráskódból, nem nehezebbmegtanulni bármit is, mint egy könyvböl?
- ha te helpből tanulod a szemantikát, minden tiszteletem a tied
- nos, a jegyzetet én is említettem
- segíteni pedig csak annak lehet aki tud valamit -
ViragL
tag
válasz
Wizardmon #1383 üzenetére
Nem csak rád céloztam, van itt más is aki hasonló cipőben jár. Konkrétan senkit nem akarok bántani, nyilván el kell kezdeni valahogy, engem az bosszant, hogy divat lett a kezdők között előbb kérdezni, minden háttérismeret nélkül és csak utánna megnézni a szakirodalmat.
Így a kezdő a fórumon választ kap a kérdésére, a válasz vagy jó vagy nem, de majdnem biztos, hogy hiányos. Aztán a kezdő ezekből az információkból próbál valamit alkotni és csodálkozik, hogy nem megy. Holott, ha előbb elolvasott volna egy témába vágó könyvet, vagy jegyzetet (lektorált jegyzetet, nem valami útszéli xart), akkor ott megtalálta volna azokat az információkat amikkel elkerülhette volna a hibát. Tehát ugyanott van, el kell olvasnia valamelyik szaikrodalmat. Tehát, szerintem, csak kiszúr magával az illető, ha az előbb említett módon jár el.
Már nem is értem, miért borultam ki, hiszen, ha valaki szereti a rögösebb utat, az járjon azon.
Annak örülök, hogy sértődés nem lett a dologbol. Mégegyszer hansúlyozom, nem konkrétan neked szántam az előbbi hozzászólásomat, hanem mindenkinek, aki azt a módszert követi. -
cucka
addikt
félig-meddig egyet tudok érteni veled, mint koca programozó. a programozás fejlett absztrakciós készséget kíván, ha valakiben ez nincs meg, akkor úgyse fogja megérteni, hasonlóan a matematikához.
de:
a fórumban elhangzó definiciók (ha lehet őket így nevezni) 99%-a pontatlan, hiányos és sok esetben félrevezető. - a fórumban segíteni próbáló emberek úgy próbálják elmagyarázni a dolgokat, hogy az illető értse. sokszor a kézzel-lábbal magyarázat célravezetőbb, mint a hajszálpontos definíció. másrészt bárki írhat butaságot/pontatlanságot, szerintem senki nem sértődik meg, ha egy nála okosabb ember kijavítja a hibáit.
Ha valaki elolvas egy szakkönyvet vagy egy (lektorált!) egyetemi jegyzetet és abból nem tudja felfogni ezeket az alapvető dolgokat, az hagyja abba. - nem tudom, olvastál-e egyetemi programozás jegyzetet, hozzászólásból úgy tűnik, hogy igen. nos, akkor ellenpéldaként megmutatnám az 1ik első éves tárgyunkból a ciklus definícióját. [link] . (igen, elte progmat, fóthizmus). nos, ha illető fórumtag nem érti a ciklusokat és odahányom ezt, akkor fél kezemet rá, hogy továbbra sem fogja érteni. sőt, szerintem ezt csak akkor lehet megérteni, ha már írtál néhány működő ciklust és tudod, hogy működik. pedig ez egy teljesen korrekt definíció, ebbe nem lehet belekötni, viszont nem fog segíteni senkinek.
nekem is kézzel-lábbal magyarázták annak idején az alapfogalmakat, próbálgattam, megértettem. ha valakinek van érzéke hozzá, akkor ez a helyes irány szerintem. (más kérdés, hogy néhány emberből innen ez -no offense- szerintem hiányzik. nem nagyképűségből, mert az én ismereteim is sokszor hiányosak, ugyanakkor az alapfogalmakkal sosem voltak gondjaim). -
N!tRo
tag
Mondok neked a szakirodalommal kapcsolatban valamit.
Életembe egyetlen egy szakirodalmat sem olvastam el, maximum a Pascal súgóját.
És nosza, idén április 19-20-21-én fehérváron megrendezett ORSZÁGOS szakmai tanulmányi verseny döntőjén informatika alapismeretek tantárgyból (pascal + access + elmélet + szóbeli) 6. helyezést értem el, ahol a gyakorlati programozáson (gép előtt pascal) hibátlan dolgozatot adtam be.
A szóbeli nem érdekes
Szóval nem feltétlen szükséges a szakkönyv, ha van időd és kedved a dologhoz, akkor programforrásokból, súgóból, jegyzetekből és mások segítségéből is meg lehet tanulni.
SZERINTEM.
Nem kötözködni akarok, félre ne értsJah és dicsekedni sem.
-
Wizardmon
csendes tag
Tudom hogy rám céloztál, semmi baj
Én nem mondtam, hogy programozni egyszerű, de olyan ember vagyok, aki mindent egyszerre akar, meg minél előbb. A szakkönyvek / tankönyvek meg már folyamatban vannak, addig meg gondoltam elnézek ide és felvilágosítást kérek az eddig olvasottakról
-
ViragL
tag
Azt az egyet mondja meg nekem valaki, hogy miért hiszi azt mindenki, hogy programozni nagyon egyszerü, és mindenfajta elméleti tudás nélkül elsajátítható egy programnyelv?
Ugyanolyan dolog ez mint bármi más, be kel szerezni szakirodalmat, meg kell tanulni a dolgokat aztán lehet alkalmazni. Rá kell szánni az időt, nem egyből kérdezni, hanem átgondolni a dolgokat ha kell többször. Itt hívom fel a kezdők figyelmét arra, hogy a fórumban elhangzó definiciók (ha lehet őket így nevezni) 99%-a pontatlan, hiányos és sok esetben félrevezető.
Sok embernek problémát okoz, pl a ciklus fogalma vagy az összetett adatszerkezetek, ezek nagyon alap dolgok, ők vagy nem olvasnak szakirodalmat, vagy már elnézést, de esélyük nincs megtanulni programozni.
Ha valaki elolvas egy szakkönyvet vagy egy (lektorált!) egyetemi jegyzetet és abból nem tudja felfogni ezeket az alapvető dolgokat, az hagyja abba.
MOD : Nem akarok megbántai senkit, csak kicsit kiborultam azon ami itt zajlik. Ha mégis megbántottam valakit, akkor sorry.
[Szerkesztve] -
VladimirR
nagyúr
válasz
Rickenstein #1380 üzenetére
?
-
Wizardmon
csendes tag
Asszem kezdem érteni (a kezdem-en van a hangsúly
)
Ha ''j'' van a zárójelben, akkor ugyebár végrehajtja az i1-en a j összes elemét aztán az i2-n és az i3-on is ugyanígy, és a ''j'' beljebb van mint az ''i'' így az ''i'' csak akkor vált amikor a ''j'' már végigfutott. Lehet hogy homályosan fogalmaztam, de nálam ez jobban össze van állva
[Szerkesztve] -
Wizardmon
csendes tag
Na én most csináltam egy ilyet:
...
begin
clrscr;
for i:=1 to 3 do begin
writeln;
for j:=1 to 3 do begin
x[i, j]:=( j );
write(x[i, j ] );
end;
end;
readln;
end.
És ezt írja ki:
123
123
123
És az most jó
Ha pl a X[i, j ]:=( j ) sorba a ( j )-t ( i )-re cserélem akkor meg ezt írja:
111
222
333
és ez is tök jó
Már csak meg kellem értelmezni
[Szerkesztve] -
cucka
addikt
válasz
Wizardmon #1369 üzenetére
inicializálás - ha létrehozol egy változót, akkor létrehozás pillanatában kap egy értéket. ez az inicializálás. ez lehet automatikus (implicit), amikor a fordító hozzárendeli mondjuk a 0 értéket (üres stringet, stb.), vagy kézi, amikor te mondod meg, hogy mennyi legyen az az érték (ezt ha jól emlékszem, nem támogatja a pascal). vagy hiányozhat, akkor az lesz az értéke, ami éppen azon a memóriaterületen volt, ahol tárolódik a változó.
[Szerkesztve] -
VladimirR
nagyúr
válasz
Wizardmon #1369 üzenetére
amikor kezdoerteket adsz a valtozoidnak
tehat az nem eleg, hogy letrehozod a valtozot (tombot), kell neki adni valami erteket is, hogy ne 0-k, vagy a memoriaban talalt szemet legyen benne
pl.:
var i, j: byte;
x: array[ 1..3, 1..3 ] of byte;
begin
for i := 1 to 3 do
for j := 1 to 3 do
x[ i, j ] := i * 10 + j;
[...]
end.
ekkor a tomb elemeinek elso szamjegye ez egyik, masodik szamjegye a masik dimenzio index-e lesz -
Norbo03
őstag
Hali!
Nah én is tanulom apaslcalt. A könyv neve Turbo pascal Kasza János 12-16 éveseknek programozási ismeretek.
Tartalomjegyzéke:
Input-output müveletek
Értékadó útsítás
Programleágazások
Ciklusok 1
For Ciklusok alkalmazása
Ciklusok 2
Eljárások,függvények
állományok kezelésének alapjai.,
Sztetek ez a könyv ezzel a tartalommal mennyire elég pascal nyelvbe? Mert pl amit Wizardmon ír olyan ebbe a könyvbe nincs.
Mod: Wizardmon: Sztem az incializálás az beismreés/felismerés jelent asszem.
[Szerkesztve] -
VladimirR
nagyúr
bahh, nem eleg, hogy megelozol, de raarasul olyannyira, hogy ketszer is beirtad, mig en csak egyszer ;p
egyebkent aprosag ugyan, de amit en hasznaltam (borland pascal 7) az ugy remlik nem nullazott semmit, azokat az ertekeket irta ki, amiket epp a memoriaban talalt
szerk.: lol, mar megint megeloztel
[Szerkesztve] -
cucka
addikt
válasz
VladimirR #1365 üzenetére
a turbo pascal emlékeim szerint minden változót 0-ra inicializál.
mod: ki kéne próbálni, mert határozottan emlékszem arra, hogy a turbo és a borland pascal is 0-ra inicializál. nekem nincs pascal fordító a gépemen, meg egyáltalán évek óta nem programoztam abban a nyelvben, szóval hajrá
[Szerkesztve] -
VladimirR
nagyúr
válasz
Wizardmon #1362 üzenetére
sorba irja, de ez nem a tomb elemeit irja ki, hanem a kovetkezot:
111213212223313233
ha a tomb elemeit akarod kiiratni, akkor:
write( x[ i, j ] );
ha azt akarod, hogy tablazatos legyen, magad kell megoldanod, pl.:
for i := 1 to 3 do
for j := 1 to 3 do begin
if j = 3 then
writeln( x [i, j ] : 4 )
else
write( x[ i, j ] : 4 );
end;
a write-ban a : 4 arra valo, hogy igy 4 karakter szelessegu helyet tart fenn a kiirandfo erteknek (byte eseteben ugye 3 a max szamjegy (0-255), es szep igy tablazatos format fogsz kapni)
1 2 3
1 2 3
1 2 3
azaz majdnem, ugyanis neked minden hulyeseget fog kiirni, mivel nem inicializaltad a tombot -
cucka
addikt
válasz
Wizardmon #1362 üzenetére
először: az x tömbödet létrehoztad ugyan, de nem adtál egyik elemének sem értéket, így (ha jól emlékszem) minden eleme 0 lesz. tehát van egy 3x3-as táblázatod, minden cellájában 0.
másodszor: a ciklusodban a write-al nem a tömb értékeit iratod ki, hanem a ciklusváltozókat (ez az i és a j). ha lefuttatod a programot, akkor láthatod ezt, mert nem 0-kat fog kiírni. először a külső ciklus i=1 értékére fut le a ciklus magja, amiben szintén egy ciklus van, j-re. így első menetben azt kapod, hogy 111213. itt az 1.1.1 az i értéke, .1.2.3 pedig a j értéke. most a külső (i-s ciklus) magja lefutott 1-re, veszi a következő értéket, ami i=2, és megcsinálja rá ugyanazt, vagyis kiírja, hogy 212223. ezután lefut i=3-ra is tehát a végeredmény az lesz, hogy 111213212223313233.
harmadszor: a kiírás módját te szabod meg. itt például a write-al iratsz ki. write(i,j) azt jelenti, hogy egymás után kiírja az i és a j értékét. ha azt szeretnéd, hogy a tömb i. sorának j. elemét irasd ki, akkor write(x[i,j]) -vel teheted ezt meg. természetesen a belső ciklus magjában, tehát 9 kiiratás lesz, az összes lehetséges i,j értékre.
ha a külső (i változójú) ciklusodat úgy alakítod, hogy a benne lévő for után írjon ki egy üres sort, akkor táblázat-szerűen kapod az eredményt. (vigyázz, ekkor már több utasítás lesz a ciklus magjában, tehát kell a begin-end;) -
-
cucka
addikt
válasz
Wizardmon #1360 üzenetére
tömb - vegyük azt, hogy szeretnél sok egyforma típusú adatokat tárolni. például van 200 számod és növekvő sorrendbe szeretnéd őket rendezni. ekkor használsz tömböt, ami tulajdonképpen azt a 200 számot reprezentálja. a tömbben mindegyik elemnek van egy sorszáma, ezt indexnek hívjuk. pascal-ban az indexek 1-től kezdődnek.
például létrehozol egy 10 elemű tömböt, amelyben egész számokat tárolsz:
var x: array [1..10] of integer;
ekkor a tömb elemeit x[ i ] formában éred el, és pont úgy kezeled, mint ha változók lennének, értéket adhatsz neki, számolhatsz vele, satöbbi. az egész tömböt az x változó jelenti, egyes elemeit meg az x[1], x[2], satöbbi. ha tegyük fel 200 számod van és statisztikát szeretnél készíteni (mondjuk egy iskola tanulóinak év végi átlagából szeretnél elolszlás-grafikont készíteni) akkor egy ilyen x tömbbe belepakolhatod a számokat. tömb nélkül létre kéne hozz 200 különálló változót, ami nem jó megoldás. a másik előnye, hogy ciklussal végigjárhatod a tömbödet.
a fent leírt egyszerű tömb tulajdonképpen egy (matematikai értelemben vett) vektor. mint excel-ben egy olyan táblázat, amelyiknek 1 sora vagy oszlopa van. vannak 2 dimenziós tömbök, ezek tulajdonképpen mátrixok (táblázatok). ezen kívül lehetnek sokdimenziós tömbök, ezeket már nehezebb elképzelni.
ha valami nem világos, kérdezz. egyébként az általad linkelt doksiban faszán le van írva ez.
[Szerkesztve] -
Wizardmon
csendes tag
Köszi mindenkinek
Én pl innen tanulgattam eddig ezt a nyelvet:[link] De egyre inkább kezd értelmetlen lenni.
N!tro-nak külön köszönet a ciklusismertetőhöz
Ja és feltétlenül megnézem azt a könyvet v.mikor.
Végül untatásképpen elmondom, hogy csináltam tök jó progikat és örült a fejem neki.Ilyen pl a másodfokú egyenlet megoldó, meg a determinánsos. Lehet hogy egyszerű progik de nagy volt a sikerélményem.
Na jó, mégvalami és befejezem: Megpróbáltam grafikus üzemmódba tenni a TP-t de nem sikerült. Nemtom mit kell írni az: InitGraph után a zárójelbe. Az első kettő váltoó még úgyahogy rendben van, de a 3.-hoz a vid.kártyára hivatkozik, vagy mi és.... á inkább hagyom, ennyire nem kénék előreugrani ha még az összetett adattípusokat se értem.
Amugy N!tro kérdésére válaszolva a tömb, halmaz, felhasználói és rekord típus érdekelne. Mindegyik homály. Addig még oké hogy felírom őket, de hogy MI ÉRTELME meg lehet-e hivatkozni az összesre. Pl.: ha egy sorral lejjebb akarnám tenni az összeset,akkor külön fel kell írnom az összes változót a gotoxy után? meg plcsak ciklusokkal lehet kiíratni őket?
Most már tényleg befejeztem! -
ViragL
tag
válasz
Wizardmon #1356 üzenetére
Ha szerencséd van a prog.hu-n találsz néhány embert aki szivesen elmagyarázza neked amit nem értesz. Alternativaként ide is írhatod a kérdéseidet, úgy tünik én vagyok itt az ügyeletes válaszadó, tehát ha tudok válaszolok a kérdéseidre.
Mod: Látom már nem vagyok egyedül.
[Szerkesztve] -
cucka
addikt
-
N!tRo
tag
válasz
Wizardmon #1356 üzenetére
Hello!
Az összetett adattípusokon belül mi érdekel?
Ciklusok.
Három ciklus van (tudomásom szerint)
a FOR ciklus, a REPEAT..UNTIL ciklus és a WHILE..DO ciklus.
FOR ciklus
Alapforma
FOR változó:= első TO második DO parancs(ok);
Példa
FOR i:= 1 to 10 do writeln('Hello!'); Ez annyit tesz hogy 10x kiírja a képernyőre hogy Hello!
Leírás
A lényege ennek annyi, hogy egy változó értékét növeli vagy csökkenti valahányszor és ugyanennyiszer végrehajtja a DO utáni utasítás(oka)t. A változó értékét fel lehet használni az utasításokban, mint például egy tömb feltöltése.
REPEAT..UNTIL ciklus
Alapforma
REPEAT
utasítás(ok);
...
UNTIL feltétel;
Példa
i:=1;
REPEAT
writeln('Hello!');
i:=i+1;
UNTIL i:= 10;
Leírás
Ez az úgynevezett hátul tesztelős ciklus. A lényege ennek az, hogy amíg az UNTIL utáni feltétel nem teljesül, addig hajta végre a ciklusba írt utasításokat.
Magyarul így szól:
CSINÁLD ÚJRA
ez(eke)t;
AMÍG i egyenlő nem lesz 10-el.
WHILE..DO ciklus
Alapforma
WHILE feltétel DO utasítás(ok).
Példa
i:=1;
WHILE i<>10 DO BEGIN writeln('Hello!'); i:=i+1; END; (azért van begin end, mert ha a DO után több utasítás áll, ami a ciklushoz tartozik, begin end-el kell alkalmazni. Ugyanígy a FOR ciklusnál is.
Leírás
Ez meg az úgynevezett előltesztelő ciklus, tehát előbb megvizsgálja a feltételt, majd végrehajtja az utasításokat. Ez a REPEAT..UNTIL ellentétje. A feltételben is pont a fordítottját kell írni. Magyarul így szól:
AMÍG nem egyenlő i a 10-el CSINÁLD ez(eke)t.
Remélem tudtam segíteni.
Hali
[Szerkesztve] -
Wizardmon
csendes tag
Heló mindenki. Új vagyok itt.
Nemrég elkezdtem TP-al programozni. Az elején még minden simán ment, de eljutottam az öszetett adattípusokig és onnan már homály minden (beleértve azt is). Valaki nem tudna olyan internetes oldalt mondani, ahol értelmesen elmagyarázzák, hogy mi miért? Nagyon megköszönném.
Amugy az előző részek iggen jól mennek, talán a ciklusokkal vannak még olyan gondjaim, hogy nem tudom mire valók
[Szerkesztve] -
ViragL
tag
válasz
VladimirR #1352 üzenetére
Régen volt, nem emlékszem mindenre, de most hogy mondod rémlik már.
Azthiszem a Delay() aljárás működéséhez szükséges adatok ''begyüjtésénél'' hibázik, végez egy 0 val való osztást. Dob egy kivételt emiatt, az nincs lekezelve, így a program visszadobja azt az operációs rendszernek és runtime errorral leáll.
A Pascal (-ban írt program) ugyanúgy dob kivételeket, mint bármelyik másik programnyelv (-ben írt program), csak nincs fejlett eszközrendszere a kivételek kezelésére. Azthiszem egyedül a pragmákkal lehet valamilyen szinten kezelni a kivételeket és annyi.
Szerintem. -
ViragL
tag
válasz
Norbo03 #1349 üzenetére
Nos, a Turbo Pascal, Borland Pascal és társaik csak DOS-os alkalmazás fejlesztését teszik lehetővé. (a Free Pascalt nem ismerem) Tehát, ha nem ''klasszikus DOS-os'' programokat akarsz írni akkor egyiket sem javaslom. Szórakozásra jók, másra már nem nagyon.
Anno, a TP 7.0 jónak számított, azt tudom javasolni. Annyi ''bibi'' van vele, hogy (azthiszem) 200 Mhz -nél gyorsabb CPU-n kivételt dob, 0-val való osztásra hivatkozva, de erre van egy javítás, netről leszedhető)
Ha úgyis most kezdel programozást tanulni, akkor SZERINTEM, érdemes egy modernebb, valódi Win alaklmazás fejlesztésére alkalmas nyelvet tanulnod.
A Delphit javaslom, gyakorlatilag Object Pascal egy nagyon jól használható környezettel. Egyszerű, könnyen tanulható, bőséges irodalommal.
Szerintem. -
Norbo03
őstag
Hali!
Én msot kezdek tanulni programozást turbo pascal nyelvbe. Melyik verzióját ajánlátok a Turbo pascal-nak Win-re? WElőre is köszike mindenkinek! -
ViragL
tag
Jószándékú megjegyzés volt részemről, remélem, nem bántottalak meg, nem az volt a célom!
Azért remélem nem csak az off-ot olvastad. Ha kell a témában segítség, segítek szivesen.
Valóban az a legfontosabb, hogy te átlásd, amit csinálsz, de ha egyszer egy ehhez hasonló kódot odaadsz valakinek, hogy nézze át...csak les majd szegény...
Még egyszer sorry! Az is igaz, hogy el kell kezdeni valahol, tehát hajrá! -
ViragL
tag
Ha megfelelő célszoftvert (pl. bármelyik általános szövegszerkesztőt) használnál a mellékelt szöveg megírására (és nem egy DOS alapú editort) akkor a helyesírás nem jelentene problémát.
Minden tiszteletem annak a személynek, aki rászánja az időt és kijavítja a helyesírási hibáidat. -
ViragL
tag
Ha transzformációkat végzel, akkor tárold az adatokat lebegőpontosan, külömben pontatlan adatokkal számolsz tovább és torzulni fog (ugye?)
Egy apróság, ha nem vagy tisztában a tömb és a ciklus fogalmával, akkor korai neked ilyen dolgokkal foglalkozni, ha meg igen akkor használd, átláthatóbb lesz a program. Ez csak tipp. -
alitak
senior tag
Én már végeztem a programommal, bár szerintem a nyáron megpróbálom majd átírni graphra, és akkor képek is lehetnek majd benne.
Viszont a játékhoz tartózó text.txt-t is át kéne nézni, biztos vannak benne hibák, csak nekem nincs rá erőm. Szóval ha esetleg akar valaki segíteni ebben az ízig-vérig pascalos problémában, akkor jelentkezzen -
N!tRo
tag
pityPANG ?
-
Ákoska
csendes tag
Sziasztok!
A segítségeteket szeretném kérni: Hogy lehet EXE fájlt ''csinálni'' a Turbo Pascalban?
Köszi előre is!
Üdv: Ákos -
VladimirR
nagyúr
{$I-}
append( file );
{$I+}
if ioresult <> 0 then begin
{$I-}
rewrite( file );
{$I+}
end;
bar nem tudom, lehet delphi alatt van ra fuggveny, pascal alatt a I direktiva kapcsolgatasaval, es az ioresult valtozoval lehetett jatszani (mindkettorol kimeritoen ir a sugo, en meg csak azert nem, mert reg hasznaltam) -
czappa
aktív tag
Sziasztok! Delphiben írok egy progit windows alá; egy kérdésem lenne ami viszont - azt hiszem - inkább pascalhoz kapcsolódik.
Hogyan döntöm el egy szöveges file-ról (ismert az elérési út), hogy ott van-e, létezik-e?
Mert ha létezik, akkor hozzáírni szeretnék (append), ha nem akkor meg létrehozni és írni (rewrite).
Előre is köszi! -
alitak
senior tag
Az a kérdésem, hogyha a programomban crt unitot használok, akkor megoldható-e, hogy közben a képernyő másik részén graph unit van használtban?
-
alitak
senior tag
Itt van minden fájl, de a szöveg még nem teljes. Amint megvan, azt is frissítem.
[link] -
alitak
senior tag
Up bizony!
Na úgy néz ki, hogy elkészült a programom első bétája, amiben már minden műxik, remélhetően jól. Ha lesz még kedvem valaha, akkor biztos lesz még bővítve: pl varázslás, tárgyak...
Szóval ha esetleg valaki kipróbálná, esetleg véleményezné, akkor küldöm. Csak még várom haverom, hogy befejezze a könyv gépelését... -
alitak
senior tag
Nagyon gyors help kéne: Fájlból olvasok be, változó mennyiségű adatot. Úgy tudom, hogy van valamilyen parancs, ami azt figyeli, hogy mikor van vége a fájlnak. Na ez a parancs(?) kéne.
-
N!tRo
tag
válasz
emitter #1315 üzenetére
hát, nem tudom
végülis csak sin vagy csak cos függvénnyel félig megvalósítható a dolog, csak torzít.
Én csak úgy csináltam, hogy külön forgatja az x illetve az y tengelyeket. Ezért torzít. Ezt a kettőt valahogy egymáshoz képest kell kiszámolni, akkor nem torzítana. Szerintem...
Mátrixokat, koordináta-transzformációt középiskolában tanítják
Ha érdekel nézd meg [link]
Meg akit érdekel, megnézheti. -
emitter
őstag
ez jó ötlet, már én is gondolkoztam rajta!
ehhez nem kell véletlenül egy kicsit magasabb matematikai tudás? pl. mátrixok, koordináta-transzformáció..
_eskimo: ha van vmi programozás-könyved, abban szoktak lenni feladatok. Meg gugli, csak elég sokat kell keresni, míg talál az ember vmi sovány eredméynttudom, mert egy éve én is hasonló bőrben voltam
(csak nekem volt könyvem)
amúgy meg 2005-ös feladatsor kész van?
[Szerkesztve] -
_eskimo
csendes tag
Sziasztok!
Programoznék, csak ötletem nincs. A 2006-os emelt szintű érettségi programozás részét most csináltam meg. Hasonló feladatokat honnan szerezhetnék?
Előre is köszi!
[Szerkesztve] -
alitak
senior tag
Mindkettőtöknek köszi a helpet, sikerült megértenem
-
N!tRo
tag
Írok példákat, hátha megérted belőlük:
// ------------------------------------------ //
function tangens(szog:real):real;
begin
tangens:=sin(szog) / cos(szog);
end;
...
writeln(tangens(45));
// ------------------------------------------ //
function kocka:integer;
begin
randomize;
kocka:=random(6)+1;
end;
...
writeln(kocka);
// ------------------------------------------ //
function negyzet(x:integer):longint;
begin
negyzet:=x*x;
end;
...
writeln('4-nek a négyzete= ',negyzet(4));
{ tudom hogy van SQR függvény, csupán demonstrálás céljából csináltam }
// ------------------------------------------ //
Tehát a lényeg, hogy a function mindig egy értékkel tér vissza, lehet kezdőértékeket, egyéb paramétereket is adni neki (lásd: tangens, negyzet) de nem muszály (lásd kocka), a function tpye-ja határozza meg a visszatérő érték típusát is, tehát function meghaltam:boolean; egy logikai változót fog takarni, meghaltam-e a csatában vagy sem, de az is lehetne hogy function nevek(sorszam:integer):string ami egy megadott ''sorszam''-ú ember nevét, stringjét adja vissza neked.
De ez csak alapdolgok, ennél bővebben az előző hozzászóló linkjeiben találsz még leírást. -
emitter
őstag
-
alitak
senior tag
Na már megint én vagyok
A programomban rengeteg helyen kéne dobókockával dobni, és ezt úgy oldottam meg, hogy random(6)+1. Viszont gondoltam kéne írni egy function-t, vagy valami hasonlót, hogy ne kelljen beírnom mindenhova azt hogy random(6)+1, csak azt hogy pl. kocka. Problémám az, hogy functionról semmit sem tudokSzóval ha valaki elmondja, hogy hogyan működik, azt megköszönném.
[Szerkesztve] -
alitak
senior tag
Na megvan a hiba
Gyuri 5lete beigazolódott. Viszont annyira banális, hogy le sem merem írni
Na jó mégis: A jel nevű változóm deklarálva volt a főprogramban. Meg az alprogramban isInentől nem részletezem tovább...
Viszont mindenkinek köszönöm a kitartó hiba-lehetőség szórásokat. -
alitak
senior tag
A problémás rész az volt bizony.
Nagy segítség volt, hogy észrevetted a két helyen is előforduló exitet, azt jó eséllyel suliban is beleírtam, és elfeledtem.
case jel of
#80: begin
o:=o+1; {fel}
textbackground(white); gotoxy(2,y+oe); write(lehet[oe]); {elozo atfestese}
textbackground(blue); gotoxy(2,y+o); write(lehet[o]); {uj atirasa}
end;
#72: begin
o:=o-1; {le}
textbackground(white); gotoxy(2,y+oe); write(lehet[oe]); {elozo atfestese}
textbackground(blue); gotoxy(2,y+o); write(lehet[o]); {uj atirasa}
end;
Ezzel az a baj, hogy ha az o értéke kiesik a 0-3 intervallumból, akkor is kirajzolja, és csak utána korrigálja az o értékét.
#13: case o of
1..5: fej:=lehetfej[o];
end;
Ez világmegváltás volt, thx érte
Lefutattam F7-ttel az egész szart, és arra jutottam, hogy mikor megnyomom az ESC-pet, akkor a jel-be bekerül a #27, és ott is marad, amíg ki nem lép a procedúrából. Utána már rejtélyesen az #0 értéket veszi fel. Ezért az egész menübe kilépést megoldottam egy boolean változóval. Ami legalább műxik. Viszont onnan meg nem működik rendesen a menu procedura, de az már a holnap munkája lesz.
ui.: Sokat segítettél, köszi. És én is Attila vagyok
mod: frissítettem a változatot, amit nemrég linkeltem.
[Szerkesztve] -
N!tRo
tag
Hali!
Ha minden igaz, ez az az ominózus rész, amiből problémák adódtak:
repeat
oe:=o;
while ( keypressed) do readkey;
jel := readkey;
if ( jel = #0) then jel := readkey;
if jel=#80 then o:=o+1;{fel}
if jel=#72 then o:=o-1;{le}
if jel=#27 then exit; {esc}
if o=0 then o:=n; {tulhaladas}
if o=n+1 then o:=1; {vedelem}
if (jel=#72) or (jel=#80) then begin
textbackground(white);gotoxy(2,y+oe);write(lehet[oe]);{elozo atfestese}
textbackground(blue);gotoxy(2,y+o);write(lehet[o]);{uj atirasa}
end;
until (jel=#13) or (jel=#27);
if jel=#27 then begin szoveg:='';exit;end;{kilep a menube,esc}
if jel=#13 then{enter}
case o of
1:fej:=lehetfej[o];
2:fej:=lehetfej[o];
3:fej:=lehetfej[o];
4:fej:=lehetfej[o];
5:fej:=lehetfej[o];
end;
szoveg:='';reset(fajl2);
end;
Átírtam egy két dolgot, csak azért hogy jobban átlátható legyen, de lehet hogy a feltételezett hibát is kijavítottam ezzel, kérlek teszteld le, nekem nincs rá most lehetőségem, meg őszintén, megnéztem a progidat, nagyon szétszórt az egész. De ha te átlátod no problem
Szóval szerintem így:
while (keypressed) do readkey;
jel:= readkey; if jel = #0 then jel:=readkey;
repeat
oe:=o;
case jel of
#80: begin
o:=o+1; {fel}
textbackground(white); gotoxy(2,y+oe); write(lehet[oe]); {elozo atfestese}
textbackground(blue); gotoxy(2,y+o); write(lehet[o]); {uj atirasa}
end;
#72: begin
o:=o-1; {le}
textbackground(white); gotoxy(2,y+oe); write(lehet[oe]); {elozo atfestese}
textbackground(blue); gotoxy(2,y+o); write(lehet[o]); {uj atirasa}
end;
{ ezt itt nem ertem, itt is exit, meg par sorral lejjebb is??? kell ez ide???
nem lenne jobb ha until utan van csak exit? szerintem torold ezt a sort, de te tudod }
#27: exit; {esc}
end;
if o=0 then o:=n; {tulhaladas}
if o=n+1 then o:=1; {vedelem}
until (jel=#13) or (jel=#27);
case jel of
{ ide se kell a szoveg:='' mert par sorral lejjebb mindenkepp vegrehajtodik ez a parancs
vagy tedd az until utan rogton hogy szoveg:='', szerintem }
#27: begin szoveg:=''; exit; end; {kilep a menube,esc}
#13: case o of
1..5: fej:=lehetfej[o];
end;
end;
szoveg:=''; reset(fajl2);
end;
Üdv: Attila
ui.: remélem tudtam segíteni
[Szerkesztve]
[Szerkesztve] -
tgmaster
csendes tag
Nem tudom, hogy a búbánatba lehet szerkeszteni az üzenetet...
A jel változó a memóriában tuti, hogy a lehet tömb után helyezkedik el, tehát valszeg az szemeteli tele.
Új hozzászólás Aktív témák
Hirdetés
- Építő/felújító topik
- exHWSW - Értünk mindenhez IS
- Milyen notebookot vegyek?
- Azonnali fáradt gőzös kérdések órája
- One otthoni szolgáltatások (TV, internet, telefon)
- Call of Duty: Black Ops 6
- Projektor topic
- Milyen billentyűzetet vegyek?
- Windows Insider Program
- Azonnali fotós kérdések órája
- További aktív témák...
- Honor Magic5 Lite 128GB, Kártyafüggetlen, 1 Év Garanciával
- GYÖNYÖRŰ iPhone 12 Pro Max 128GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS2107, 100% Akkumulátor
- Telefon felvásárlás!! Samsung Galaxy A14/Samsung Galaxy A34/Samsung Galaxy A54
- Telefon felvásárlás!! iPhone 14/iPhone 14 Plus/iPhone 14 Pro/iPhone 14 Pro Max
- GYÖNYÖRŰ iPhone 13 mini 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3316
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest