271
Turbo Pascal
-
mcsaba #231 Nemtudjátok hogy lehet a Turbo Pascal minden funkcióját használni, főleg a grafikus részt, 64 bites windows 7-esen, próbáltam a dosbox-ot de nem müködött. -
#230 jah igen a program itt egy 30 rekordból álló tömböt olvas be, a rekordok tartalmazzák az autók gyártási évét, összes futott km, és rendszámukat -
#229 Programok felépítése kiegészitések stb ;)
A turbo pacalban egyes karakterek fontos jelentéssel rendelkeznek
ezek:
; -sorokat zárunk le, fontos hogy a legtöbb sort lezárjuk, pl paraméterek és ciklusokat
+,-,*,/ -ezek a műveleti jelek az általános matematika elve alapján működtetik a programokat
<,>,= -a válozók közti össze függését lehet meghatározni a programban a relációs jelekkel
{ } -ha valamiféle megjegyzést szeretnénk a programba fűzni, akkor kapcsos zárójelbe eszük, így azzal a program nem foglalkozik
. -fontos jel a program végét jelzi
: -változóknál alkalmazzuk meghtározásra, és a megjelenítésnél is lehet használni pl:
write(változó:3:2) <-- ez azt jelenti hogy a tizedes vessző elött 3 számot majd a vessző után 2 számot jelenít meg
:= -változók érték adásához hazsnáljuk
( ) -kiíráshoz elkülönítéshez használjuk
Fontosab szavak a pacalban
begin, end -a program főbb ciklusait, részeit beginnel kezdjük, majd az end szóval zárjuk, fontos hogy a end után ; álljon
var -a variable azaz változó szó rövidítése, e után a szó után tudjuk megadni a változókat, és azok típusát
uses crt -monitor használatot engedélyez
clrscr -képernyő törlés
if -pontosan as "ha"-t jelenti cikluzst indítunk belőle
else -máskülönben, az if fügyvény elágazását lehet irányítani
for....to....do -ez egy számolást indít növekvő sorrendben
for....downto....do -az előző ellentéte, tehát csökkenő számolást hjt végre
write -kiiratás a sorban ha a változót akaruk kiírni:
pl: write(változó neve);
ha szüveget akarunk, akkor azt ' közé kell írni
pl: write('ezt a szöveget jelenítse meg');
; -vel zárni kell
writeln -ugyan azt csinálja mint az előző, csak új sorba írja ki a kiírandó szöveget
readln -gmbnyomásig megjelenítve tartja az adtokat
readkey - két funciója van ezek:
1 gombnyomásig vár
2 (és ez a fontosabb!!!) kézi adat bevitel engedélyez, használata {legjobb emlékeim szerint ha nem jól tudom szólj}
readln(változó neve);
randomize -random adatokat ad meg, a program elején kell beírni, ;-vel zárni
random -órajel szerinti ciklikusan változó adatokat ad meg a ciklusokban
repeat....until -ismétel.... addig, ez a ciklust ismétli addig vagy teljesül, a feltétel, vagy nem :D
inc - növeli a változó értékét, használata: inc(változó neve), asszem az ellentéte a dec, de nem fix :S
procedure -alprogramot lehet képezni vele, könnyebb elkülönítés érdekében jó ha használja asz ember jobban átlátható lesz
változótípusok
először az egyszrűek:
számok:
byte - 0 <-> 255
integer - -32768 <-> +32768
longint - 4 byte-nyi hosszúságon képes számot megjeleníteni {az annyit tesz hogy 4*8=32 karakter tehát qrva sok }
word - 0 <-> 65535
real - valós számok
szöveg:
char
string
boolean
text
És az összetettek
tömb
egy dimenziós
array[1..Elemszám] of adattípus
több dimenziós
array[1..sorokszama;1..oszlopokszáma] of adat típus
rekordok megadása
type azonosító=record {itt nincs pontos vessző}
mezöneve1:adattípus;
mezoneve2:adattípus; stb
Külső adatok behozatala
először is kell egy text típusú változó {tváltozó}
és egy szám változó {szváltozó}
utána
assign(tváltozó,'fájl'); - it az a lényeg hogy az f, változóhoz hozzá rendeli a filet, ha a program ugyan abban a mappában van mint a file akkor nincs baj, has másikbasn van, akkor meg kell addni az elérési utat
reset(tváltozó); -ehhez nem took hhozzá fűzni kommenetet kell és kész
readln(tváltozó,szváltozó); -ehez sem took mit hozzá fűzni kell és kész
close(tváltozó) -beolvasás vége
nah és akkor egy kis példa program magyarázatokkal
program autokkkk; {program neve}
uses crt; {monitor engedélyezés}
type auto=record {a rekordok meghatározása}
gyev:word;
futkm:longint;
rendszam:string[8];
end;
var z:byte; {változók és a tömb megadása}
kocsik:array[1..30] of auto;
procedure beolvas;
{ var i:byte; {ezzel a program részlettel
begin kézzel adunk meg adatokat,
clrscr; de ez nem kell nekünk most
writeln('ird be a gyev , futkm, rendszamot! '); ez csak gyakorlás volt}
for i:=1 to 10 do begin
readln(kocsik[i].gyev);
readln(kocsik[i].futkm);
readln(kocsik[i].rendszam);
end;} {eddig}
var i,N:byte;
f:text;
begin
clrscr;
Writeln('beolvasás fájlból'); {itt kezdődik a fájlból történő
assign(f,'AUTO.TXT'); beolvasás}
reset(f);
readln(f,N);
for i:=1 to N do begin
readln(f,kocsik[i].gyev,kocsik[i].futkm,kocsik[i].rendszam); {ez adja meg az adatokat}
delete(kocsik[i].rendszam,1,1); {mivel a txtből hoztuk az adatokat a rendszámból törölni kellett a szóközt}
if i=15 then readln;
writeln(kocsik[i].gyev:5,kocsik[i].futkm:8,kocsik[i].rendszam:8);
end;
close(f);
write(N);
readln;
end;
{------------------------------------}
procedure feladatkiir(szam:byte); {ez egy mellékes kis formalitás a
begin megjelenítéshez}
writeln('---- ',szam,'. feladat ----');
end;
{------------------------------------}
procedure legtobbkm;
var i,maxos:byte;
begin
maxos:=1;
for i:=2 to 30 do
if kocsik[i].futkm>kocsik[maxos].futkm
then maxos:=i;
writeln('a leg több km-t futott autó adatai: ',kocsik[maxos].gyev,' ',kocsik[maxos].futkm,' ',kocsik[maxos].rendszam);
readln;
end;
{------------------------------------}
procedure csokkeno;
var i,j:byte;
seged:auto;
begin
for i:=1 to 29 do begin
for j:=i+1 to 30 do begin
if kocsik[i].futkm<kocsik[j].futkm
then begin
seged:=kocsik[j];
Kocsik[j]:=kocsik[i];
kocsik[i]:=seged;
end;
end;
end;
for i:=1 to 30 do begin
writeln(kocsik[i].gyev:5,kocsik[i].futkm:8,kocsik[i].rendszam:8);
if i mod 10=0 then
readln;
end;
readln;
end;
{------------------------------------}
procedure kettoszaz;
var i:byte;
begin
i:=0;
repeat
inc(i);
until kocsik[i].futkm>200000;
writeln(i,'.kocsi a megfejtés, adatai: ',kocsik[i].gyev:5,kocsik[i].futkm:8,kocsik[i].rendszam:8);
end;
{------------------------------------}
procedure atlag;
var i:byte;
kor:integer;
begin
kor:=0;
for i:=1 to 30 do
kor:=kor+(2010-kocsik[i].gyev);
writeln(kor/30:8:3,' az autok atlag eletkora');
end;
{------------------------------------}
procedure osszeg60;
var i:byte;
km:longint;
begin
km:=0;
for i:=1 to 30 do
if (kocsik[i].gyev>1959) and (kocsik[i].gyev<1970)
then
km:=km+kocsik[i].futkm;
writeln(km,' a 60-as ‚vekben gy rtottak ”sszes futottja');
end;
{------------------------------------}
procedure kisebb80;
var i,j:byte;
begin
j:=0;
for i:=1 to 30 do begin
if kocsik[i].futkm<80000 then
inc(j);
end;
writeln(j,' kocsi futott kevesebbet mint 80000km!!! XD :) :D XD');
end;
{------------------------------------}
{A-terv}
procedure otvenelott;
var i,j:byte;
begin
j:=0;
for i:=1 to 30 do begin
if (kocsik[i].futkm=50000) and (kocsik[i].gyev<1980) then
inc(j);
end;
if j>=1 then writeln('van olyan tütü')
else writeln('nincs olyan tütü');
end;
{B-terv}
procedure vane;
var i,db:byte;
tul:boolean;
begin
tul:=false;
i:=0;
repeat
inc(i);
if (kocsik[i].futkm=50000) and (kocsik[i].gyev<1980) then tul:=true;
until (i<31) or (tul);
if i=30 then writeln('van')
else writeln('nincs');
end;
{------------------------------------}
{főprogram kezdődik}
begin
clrscr;
beolvas;
feladatkiir(1);
legtobbkm;
feladatkiir(2);
csokkeno;
feladatkiir(3);
beolvas;
kettoszaz;
feladatkiir(4);
atlag;
feladatkiir(5);
osszeg60;
feladatkiir(6);
kisebb80;
feladatkiir(7);
writeln('A-Terv');
otvenelott;
writeln('B-Terv');
vane;
readln;
end.
-
ba32107 #228 Mivel most sem írtál semmi konkrétan, ezért feladom, így nem lehet segíteni. Mondom, a példalinkben ott van egy komplett program, amiben talán két sort kell kicserélni... -
gunners #227 Azokat vágom,hogy Ciklus meg Változó!
Csak ezt tanultuk utoljára ezt a fáljból való kiiratást ez nem megy:( -
ba32107 #226 De mégis hol akadtál el? Nem írsz semmi konkrétat. Elolvastad amit linkeltem? Ott egy komplett példaprogram, gyakorlatilag csak a fájlnevet kell kicserélni benne........ mit nem értesz?
Egyáltalán mennyit értesz a pascalhoz, programozáshoz? Az alapok (ciklusok, változók) megvannak? Ha igen, ennek nem szabadna gondot okoznia. Nem akarok bunkó lenni, de ha ennyire nem megy akkor ne erőltesd az egészet. -
gunners #225 Már ott elakadok beolvasás!Ezt kellene beolvasni txt fileból és kiíratni!
Név Szept Okt Nov Dec
Albert 3000 2800 2300 4100
Arany 3000 2900 3400 2900
Arva 3000 3800 2800 1700
Azsok 3000 3100 3300 2900
-
gunners #224 Ok!Köszi!Amit adtál jó !Thanks! -
ba32107 #223 A lényeg ugyanaz, ha programozást tanulsz, akkor azzal fogsz továbbmenni, szóval semmi értelme "csalni". Itt egy jó kis leírás (gugli első találat), ebből csak meg tudod csinálni. -
gunners #222 Nem fakon vagyok ebbe a félévbe volt csak jó lenne ha nem ezen a szép Pascalon hasalnék el!!! -
gunners #221 Ez a beugró a Tanárnál!Ezt ha nem alkotok valamit akkor... -
ba32107 #220 Ha olyan fakon vagy ami programozás, akkor valószínűleg ezzel akarsz továbbmenni, szóval hidd el hogy semmi értelme átmenned úgy a tárgyon hogy nem tudsz megírni egy ilyen programot. Ha kötelező lenne, azt mondanám oké, hogy nem tudod magadtól megcsinálni, de így nem az. -
gunners #219 Köszi!
Mondjuk ez nekem nagyon fontos lenne és nagyon hálás lennék ha valaki megcsinálná! Sajnos ezen múlik hogy bukok vagy nem :S -
#218 LINK -
gunners #217 OK
Egy ilyen tutorial oldalt ami Pascal al fogalkozik be tudtok linkelni!
Kösz! -
#216 Hát ja. Hidd el jobban jársz ha maagd csinálod! :) -
ba32107 #215 Igen, értettem. Arra céloztam, hogy esetleg próbáld meg egyedül. Neten vannak tutorialok, állj neki, próbáld meg, és ha elakadsz, majd akkor segítünk, nem fogunk komplett házi feladatokat megírni, azt semmilyen fórumon nem tolerálják. -
gunners #214 Ez lenne az!
Egy fileban vannak adatok ezeket: alprogrammal, beolvasni, rendezni, kiírni, összeadni!
Köszönöm! -
ba32107 #213 És miben segítsünk? -
gunners #212 Szevasztok!
Kellene segítségetek !
Egy fileban vannak adatok ezeket: alprogrammal, beolvasni, rendezni, kiírni, összeadni!
Köszönöm! -
#211 Köszi szépen, ez sokat segített :) -
#210 Ha jól emlékszem erre szolgál a GetDate.
Bővebben a FreePascal dokumentációban. -
#209 Sziasztok, az lenne a kérdésem, hogy van-e lehetőség pascal-ban a jelenlegi dátum kiirására? -
#208 KÖszi de közben megoldottam. :)
Az volt a baj hogy változónak integer típust írtam de a case függvénynél így értam:
case i of
'1' writeln(mittudoménmi)
'2' writeln(valami)
Azok a vaeeszőcskék nem kellenek, mert így char típusú változók....Csak azt nem értem, hogy mért nem jöttem rá hamarabb... -
kormen #207 Azt mondja, hogy a CASE feltételbe beírt konstans érték illetve a változó amit használsz nem úgyanolyan tipusú.
-
#206 Helló!
MOst kezdtem Pascalt tanulni és van egy nagy problémám...VAgyis nem olyan nagy csak sehogy sem boldogulok vele.
Az a helyzet, hogy nem tudfom használni a case of parancsot...
Azt írja ki, hogy Constant and CASE types don't match. Ezzel mit akar? -
#205 Szerintem a sima Turbo Pascal 7.0-át használd. Lehet, hogy FreePascal alatt nem mennek.
Telepítsd fel a 7.0-ás Pascalt és azzal próbáld meg. -
ba32107 #204 Én a mai gépeken szoktam használni a TP7-es fordítót. Ha más nem, próbáld úgy hogy megírod a kódot, pascalban csak compile, és aztán külön futtatod, nálam működik. -
rockxy #203 Sziasztok!
Kábé tíz éve írtam egy rakás progit Pascal 7.0 nyelven.
De a P4eseken ez már nem fut. A régi P2es meg ki tudja hol van már.
FreePascal alatt hogyan kel futtatni? Lehet egyáltalán?
Letöltöttem innenpatchokat de nem tudom mit kell velük csinálni, hogy újból fuussanek a régi progik.
Segítséget kérek!
Gondolom, nem túl komplikált, ha valaki leírná mondjuk pontokba szedve.
Köszönet! -
#202 Köszönöm szépen.Müködik már :) -
ba32107 #201 Töröld le a pif fájlt -
#200 nem megy... -
ba32107 #199 Tedd ki egy normális DOS-kompatibilis mappába (pl C:\TP7) -
#198 TP6 és TP7nél is ezt irja :S -
#197 Valaki mondja el pls hogy mi a baj?:S Nem értem
Nagyon fontos lenne -
#196
Bocs de ez fájt,pötyögd légyszi be a fájlba,h uses crt; lehet dos is,de valamelyiket kihagytad. -
ba32107 #195
Egy ideig válaszolgattam, aztán meguntam... -
#194 "Van itt valaki? Egy kicsit kihalt a fórum XD "
Van, de ez nem monológ, chat. Ez egy fórum.
Ha segítséget akarsz, szedd össze a gondolataidat és kérdezz okosan.
Esetedben: mit szeretnél elérni, milyen forráskóddal próbálkoztál, milyen fordítóval (annak melyik verziójával), milyen operációs rendszeren, milyen hibaüzeneteket kaptál. -
Brainermaister #193 Van itt valaki? Egy kicsit kihalt a fórum XD -
Brainermaister #192 Hahó miért nem válaszolsz?