folder Tahribat.com Forumları
linefolder Delphi - Pascal
linefolder [PASCAL] Yol Bilgisayarı Uygulaması



[PASCAL] Yol Bilgisayarı Uygulaması

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wasd
    wasd's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    Geçen seneki ödevlerden biriydi, belki birilerinin işine yarar diye paylaşayım dedim.

    {
    * @file         Untitled1.pas
    * @description  Yol bilgisayarı simulasyonu.
    * @course       Programlama dilleri prensipleri
    * @assignment   1. Ödev
    * @date         19.02.2013 Salı
    * @author       wasd
    }
    
    program yol_bilgisayari;
    uses crt;         
    
    type yolBilgisayari = object
    public
    
     depoLimiti       : integer;
     maxHiz           : integer;
     alinacakBenzin   : single;
     gidilecekYol     : single;
     genelKm          : single;
     yerelKm          : single;
     depodaKalanYakit : single;
     hiz              : single;
     toplamZaman      : single;
     yanacakBenzin    : single;
     harcanmisYakit   : single;
     function ortHizDondur : single;
     function ortYakitDondur : single;
     procedure sabitleriAta;
     procedure aracSur;
     procedure benzinAl;
     procedure kmSifirla;
     procedure gKmGoster;
     procedure yKmGoster;
     procedure ortHiz;
     procedure ortYakit;
     procedure depodakiYakit;
     procedure menzil;
    end;
    
    var
     secim            : char;
     bilg             : yolBilgisayari;
    
    procedure islemMenusu;forward;
    procedure anaMenu;forward;
    procedure yolBilgisayariMenusu;forward;
    
    function yolBilgisayari.ortHizDondur : single;
    begin
    if ((yerelKm <> 0) and (toplamZaman <> 0)) then
    result := ((yerelKm * 60) / toplamZaman);
    if ((yerelKm = 0) or (toplamZaman = 0)) then
    result := 0;
    end;
    
    function yolBilgisayari.ortYakitDondur : single;
    begin
    if ((harcanmisYakit <> 0) and (yerelKm <> 0)) then
    result := ((harcanmisYakit*100)/yerelKm);
    if ((harcanmisYakit = 0) or (yerelKm = 0)) then
    result := 0;
    end;
    
    procedure yolBilgisayari.sabitleriAta;
    begin
     maxHiz := 220;
     depoLimiti := 60;
    end;
    
    procedure yolBilgisayari.aracSur;
    begin
     clrscr;
     if (depodaKalanYakit = 0) then
     begin
      writeln('Once benzin almalisiniz!');
      readKey;
      islemMenusu;
     end;
     if (depodaKalanYakit > 0) then
     begin
      writeln('Kac km gidilsin: ');
      readln(gidilecekYol);
      writeln('Kac km hiz ile gidilsin: ');
      readln(hiz);
      if (hiz > maxHiz) then
      begin
       writeln('Aracin azami hizi saatte 220 kilometredir, daha hizli gidemezsiniz!');
       readKey;
       islemMenusu;
      end;
      if (hiz <= maxHiz) then
      begin
       if (hiz<=50) and (hiz>0) then
        yanacakBenzin := 15;
       if (hiz<=75) and (hiz>50) then
        yanacakBenzin := 9;
       if (hiz<=110) and (hiz>75) then
        yanacakBenzin := 6;
       if (hiz<=maxHiz) and (hiz>110) then
        yanacakBenzin := 12;
       if (((gidilecekYol*yanacakBenzin)/100) <= depodaKalanYakit) then
       begin
       clrscr;
       genelKm += gidilecekYol;
       yerelKm += gidilecekYol;
       toplamZaman += ((gidilecekYol*60)/hiz);
       depodaKalanYakit -= ((gidilecekYol*yanacakBenzin)/100);
       harcanmisYakit += ((gidilecekYol*yanacakBenzin)/100);
       writeln(gidilecekYol:0:1,' km gidildi.');
       writeln(((gidilecekYol*yanacakBenzin)/100):0:1,' lt benzin harcandi.');
       writeln(((gidilecekYol / hiz)*60):0:1,' dk gecti.');
       readKey;
       islemMenusu;
       end;
      end;
     end;
    end;
    
    procedure yolBilgisayari.benzinAl;
    begin
     clrscr;
     writeln('Kac litre benzin istiyorsunuz: ');
     readln(alinacakBenzin);
     if ((depodaKalanYakit+alinacakBenzin) <= depoLimiti) then
     begin
      depodaKalanYakit := depodaKalanYakit + alinacakBenzin;
      writeln('Su anda depoda ',depodaKalanYakit:0:1,' litre benzin bulunmaktadir');
      readKey;
      islemMenusu;
      exit;
     end;
     if ((depodaKalanYakit+alinacakBenzin) > depoLimiti) then
     begin
      writeln('Depo limiti 60 litre, daha fazla benzin alamazsiniz!');
      writeln('Su anda depoda ',depodaKalanYakit:0:1,' litre benzin bulunmaktadir.');
      readKey;
      islemMenusu;
      exit;
     end;
    end;
    
    procedure yolBilgisayari.kmSifirla;
    begin
     clrscr;
     yerelKm := 0;
     toplamZaman := 0;
     harcanmisYakit := 0;
     writeln('Yerel kilometre bilgisi sifirlandi.');
     readKey;
     islemMenusu;
    end;
    
    procedure yolBilgisayari.gKmGoster;
    begin
     clrscr;
     writeln('İlk gunden beri ',genelKm:0:1,' km yol gidildi.');
     readKey;
     yolBilgisayariMenusu;
    end;
    
    procedure yolBilgisayari.yKmGoster;
    begin
     clrscr;
     writeln('Son sifirlamadan sonra ',yerelKm:0:1,' km yol gidildi.');
     readKey;
     yolBilgisayariMenusu;
    end;
    
    procedure yolBilgisayari.ortHiz;
    begin
     clrscr;
     if(ortHizDondur <> 0) then
     begin
     writeln('Ortalama hiz ',ortHizDondur:0:1,' kilometredir.');
     readKey;
     yolBilgisayariMenusu;
     end;
     if(ortHizDondur = 0) then
     begin
     writeln('Herhangi bir bilgi bulunamadi.');
     readKey;
     yolBilgisayariMenusu;
     end;
    end;
    
    procedure yolBilgisayari.ortYakit;
    begin
     if (ortYakitDondur <> 0) then
     begin
      clrscr;
      writeln('Ortalama yakit tuketimi ',ortYakitDondur:0:1,' litredir.');
      readKey;
      yolBilgisayariMenusu;
     end;
     if (ortYakitDondur = 0) then
     begin
      clrscr;
      writeln('Herhangi bir bilgi bulunamadi.');
      readKey;
      yolBilgisayariMenusu;
     end;
    end;
    
    procedure yolBilgisayari.depodakiYakit;
    begin
     clrscr;
     writeln('Su anda depoda ',depodaKalanYakit:0:1,' litre benzin bulunmaktadir.');
     readKey;
     yolBilgisayariMenusu;
    end;
    
    procedure yolBilgisayari.menzil;
    begin
     clrscr;
     if (ortHizDondur = 0) or (depodaKalanYakit = 0) or (yanacakBenzin = 0) then
     begin
      writeln('Herhangi bir bilgi bulunamadi.');
      readKey;
      yolBilgisayariMenusu;
     end;
     if (ortHizDondur<=50) and (ortHizDondur>0) then
      yanacakBenzin := 15;
     if (ortHizDondur<=75) and (ortHizDondur>50) then
      yanacakBenzin := 9;
     if (ortHizDondur<=110) and (ortHizDondur>75) then
      yanacakBenzin := 6;
     if (ortHizDondur<=maxHiz) and (ortHizDondur>110) then
      yanacakBenzin := 12;
     writeln('Depodaki benzinle saatte ',ortHizDondur:0:1,' km hiz ile ',((depodaKalanYakit/yanacakBenzin)*100):0:1,' km yol gidilebilir.');
     readKey;
     yolBilgisayariMenusu;
    end;
    
    procedure islemMenusu;
    begin
     clrscr;
     writeln('1 - Araci sur');
     writeln('2 - Benzin al');
     writeln('3 - Yerel kilometre bilgisini sifirla');
     writeln('4 - Ana menuye don');
     secim := readKey;
     case secim of
      '1' : bilg.aracSur;
      '2' : bilg.benzinAl;
      '3' : bilg.kmSifirla;
      '4' : anaMenu;
     else
      islemMenusu;
     end;
    end;
    
    procedure yolBilgisayariMenusu;
    begin
     clrscr;
     writeln('1 - Genel kilometre goster');
     writeln('2 - Yerel kilometre goster');
     writeln('3 - Ortalama hiz');
     writeln('4 - Ortalama yakit tuketimi');
     writeln('5 - Depodaki yakit');
     writeln('6 - Menzil');
     writeln('7 - Ana menuye don');
     secim := readKey;
     case secim of
      '1' : bilg.gKmGoster;
      '2' : bilg.yKmGoster;
      '3' : bilg.ortHiz;
      '4' : bilg.ortYakit;
      '5' : bilg.depodakiYakit;
      '6' : bilg.menzil;
      '7' : anaMenu;
     else
      yolBilgisayariMenusu;
     end;
    end;
    
    procedure anaMenu;
    begin
     clrscr;
     writeln('1 - Islemler');
     writeln('2 - Yol Bilgisayari');
     writeln('3 - Cikis');
     secim := readKey;
     case secim of
      '1' : islemMenusu;
      '2' : yolBilgisayariMenusu;
      '3' : halt;
     else
       anaMenu;
     end;
    end;
    
    begin
     bilg.sabitleriAta;
     anaMenu;
    end.
    

    :)
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ZoRKaYa
    ZoRKaYa's avatar
    Kayıt Tarihi: 18/Eylül/2007
    Erkek

    Eyvallah. Programlamaya ilk başladığım dil :)


    echo "imzanız özel karakter içermemelidir";
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Mythbusters
    Mythbusters's avatar
    Kayıt Tarihi: 07/Aralık/2007
    Erkek

    Emegne saglik hocam guzel calisma


    soralım öğrenelim, öğrenelim soralım.
Toplam Hit: 1829 Toplam Mesaj: 3