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.
  • Looooser
    #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
  • Looooser
    #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 &#130;vekben gy rtottak &#148;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
  • kovacsgellert
    #218
    LINK
  • gunners
    #217
    OK
    Egy ilyen tutorial oldalt ami Pascal al fogalkozik be tudtok linkelni!
    Kösz!
  • kovacsgellert
    #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!
  • exxit92
    #211
    Köszi szépen, ez sokat segített :)
  • Dj Faustus #210
    Ha jól emlékszem erre szolgál a GetDate.
    Bővebben a FreePascal dokumentációban.
  • exxit92
    #209
    Sziasztok, az lenne a kérdésem, hogy van-e lehetőség pascal-ban a jelenlegi dátum kiirására?
  • kovacsgellert
    #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ú.
  • kovacsgellert
    #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?
  • ksandor
    #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!
  • JaSoN HuNTeR #202
    Köszönöm szépen.Müködik már :)
  • ba32107
    #201
    Töröld le a pif fájlt
  • JaSoN HuNTeR #200
    nem megy...
  • ba32107
    #199
    Tedd ki egy normális DOS-kompatibilis mappába (pl C:\TP7)
  • JaSoN HuNTeR #198
    TP6 és TP7nél is ezt irja :S
  • JaSoN HuNTeR #197
    Valaki mondja el pls hogy mi a baj?:S Nem értem



    Nagyon fontos lenne
  • HanniBél
    #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...
  • Dj Faustus #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?