ГДЕ ПАСКАЛЬ? НЕ ОБЕРОН, НЕ ДЕЛЬФИ, А НОРМАЛЬНЫЙ ПАСКАЛЬ!!!!!

High-level languages programming questions
  • зачем?
  • Я умею писать ТОЛЬКО НА ПАСКАЛЕ, а меня отправляют либо на Дельфи/Оберон, либо я не могу разобраться, как пользоваться Паскалем
    Я один из тех, кто ещё не программист, но уже не новичок.
    Редактор в группе "KolibriOS - официальная группа".
  • И ещё: никто не знает, как пользоваться exetokex!
    Я один из тех, кто ещё не программист, но уже не новичок.
    Редактор в группе "KolibriOS - официальная группа".
  • Alex2003 wrote:Я умею писать ТОЛЬКО НА ПАСКАЛЕ, а меня отправляют либо на Дельфи/Оберон, либо я не могу разобраться, как пользоваться Паскалем
    А в чём проблема-то? Возьмём такой пример http://rosettacode.org/wiki/Sierpinski_triangle#Pascal выводящий в консоль такую штуку:

    Code: Select all

                   *
                  * *
                 *   *
                * * * *
               *       *
              * *     * *
             *   *   *   *
            * * * * * * * *
           *               *
          * *             * *
         *   *           *   *
        * * * *         * * * *
       *       *       *       *
      * *     * *     * *     * *
     *   *   *   *   *   *   *   *
    * * * * * * * * * * * * * * * *
    Вот изменённый код для Delphi

    Code: Select all

    {$APPTYPE CONSOLE}
    program Sierpinski;
    
    function ipow(b, n	: Integer) : Integer;
    var
       i : Integer;
    begin
       ipow := 1;
       for i := 1 to n do
          ipow := Result * b
    end;
     
    function truth(a : Char) : Boolean;
    begin
       if a = '*' then
          truth := true
       else
          truth := false
    end;
    
    function rule_90(ev :  String) : String;
    var
       l, i	: Integer;
       cp	: String;
       s	: Array[0..1] of Boolean;
    begin
       l := length(ev);
       cp := copy(ev, 1, l);
       for i := 1 to l do begin
          if (i-1) < 1 then
    	 s[0] := false
          else
    	 s[0] := truth(ev[i-1]);
          if (i+1) > l then
    	 s[1] := false
          else
    	 s[1] := truth(ev[i+1]);
          if ( (s[0] and not s[1]) or (s[1] and not s[0]) ) then
    	 cp[i] := '*'
          else
    	 cp[i] := ' ';
       end;
       rule_90 := cp
    end;
     
    procedure triangle(n : Integer);
    var
       i, l	: Integer;
       b	: String;
    begin 
       l := ipow(2, n+1);
       b := ' ';
       for i := 1 to l do
          b := concat(b, ' ');
       b[round(l/2)] := '*';
       writeln(b);
       for i := 1 to (round(l/2)-1) do begin
          b := rule_90(b);
          writeln(b)
       end
    end;
    
    begin
       triangle(4);
    end.
    Было добавлено:
    • Code: Select all

      {$APPTYPE CONSOLE}
      потому что по умолчанию создаются GUI-приложения.
    • Замена внутри функции ipow вместо ipow стало Result

      Code: Select all

      ipow := Result * b
      в справке по этому поводу вот:
      When the function name appears on the left side of an assignment statement, the compiler assumes that it is being used (like Result) to track the return value; when the function name appears anywhere else in the statement block, the compiler interprets it as a recursive call to the function itself.
    Что, сильно код отличается? Было бы желание...
  • Alex2003
    Компили тут http://kolibri-n.org/inf/hll/hll
    Но я бы очень советовал смотреть в сторону С--
    Из хаоса в космос
  • Leency wrote:Компили тут http://kolibri-n.org/inf/hll/hll
    Ну ссылку я ему уже давал http://board.kolibrios.org/viewtopic.ph ... 900#p70937
    Там вообще можно немного лулзов поймать :mrgreen:
    если вкратце
    Spoiler:
    Alex2003 wrote:У меня не получилось скомпилировать... :(
    Alex2003 wrote:Дело в том, что я пишу на языке Паскаль Турбо, а не на Обероне. Наверняка поэтому у меня и не получилось скомпилировать.
    Комилил, открывая файл с помощью Compiler.kex
    Может быть, из-за этого?
    Кстати, чем-то он напоминает http://board.kolibrios.org/memberlist.p ... ile&u=6786 и тот тоже Alex, только на 20 лет старше(судя по юзернейму) :lol:
    И оба они пишут капсом:
  • Понятно, тут все языковые компиляторы кроме FASM'а полуфабрикаты. Ладно, будем учиться жарить тушёнку! :lol:
    Я один из тех, кто ещё не программист, но уже не новичок.
    Редактор в группе "KolibriOS - официальная группа".
  • Alex2003 wrote:Понятно, тут все языковые компиляторы кроме FASM'а полуфабрикаты. Ладно, будем учиться жарить тушёнку! :lol:
    Assembler изучай)
    Технологии меняют мир, а я - меняю технологии.
  • Хм.... Мысль интересная!
    Я один из тех, кто ещё не программист, но уже не новичок.
    Редактор в группе "KolibriOS - официальная группа".
  • короче
    Pascal Pro
    http://kolibri-n.org/inf/hll/hll#ppro
    FreePascal
    http://board.kolibrios.org/viewtopic.ph ... =45#p71523
    UPD
    Увидел что не получалось скомпилировать
    У меня получилось в pascal pro
    http://board.kolibrios.org/viewtopic.ph ... =15#p75029
    Возможно потом и в fpc получится, не пробовал еще
    Last edited by maxcodehack on Sat Oct 03, 2020 6:50 pm, edited 1 time in total.
  • Leency wrote:Alex2003
    Компили тут http://kolibri-n.org/inf/hll/hll
    Но я бы очень советовал смотреть в сторону С--
    А я бы нет
    И Ghost тоже:
    http://board.kolibrios.org/viewtopic.ph ... 082#p19147
    Лучше уж kos32-gcc
  • Что понимается под обычным Паскалем? Turbo Pascal или FreePascal ?
    The best way to predict the future is to create it.
  • Либо то, либо то
    Главное чтобы не делфи и не оберон :lol:
  • На самом деле с Delphi SDK программы на Delphi являются обычными программами на Паскале.

    Консоль:

    Code: Select all

    program Hello;
    
    uses
      CRT;
    
    begin
      InitConsole('Hello');
      WriteLn('Hello, world!');
    end.
    
    GUI:

    Code: Select all

    program HelloGUI;
    
    uses
      KolibriOS;
    
    var
      WndLeft, WndTop, WndWidth, WndHeight: Integer;
    
    begin
      with GetScreenSize do
      begin
        WndWidth := Width div 4;
        WndHeight := Height div 4;
        WndLeft := (Width - WndWidth) div 2;
        WndTop := (Height - WndHeight) div 2;
      end;
    
      while True do
        case WaitEvent of
          REDRAW_EVENT:
            begin
              BeginDraw;
              DrawWindow(WndLeft, WndTop, WndWidth, WndHeight, 'Hello!', $00FFFFFF,
                WS_SKINNED_FIXED + WS_CLIENT_COORDS + WS_CAPTION, CAPTION_MOVABLE);
              EndDraw;
            end;
          KEY_EVENT:
            GetKey;
          BUTTON_EVENT:
            if GetButton.ID = 1 then
              Break;
        end;
    end.
    
    Компилируется набором инструментов, включенным в состав SDK. Больше примеров — в SDK и на форуме.
  • Who is online

    Users browsing this forum: No registered users and 4 guests