1. INDEX


  1. Resumo do conteúdo

  2. Introdução

    1. Objetivo.
    2. Pre-requisitos.
    3. Benefícios.
    4. Desvantagens.
  3. CONTEÚDO ESTUDADO.

    1. Estudar como o projeto free pascal foi criado.
    2. Assunto 02
    3. Assunto 03
    4. Assunto 04
    5. Assunto 05
    6. Assunto 06
    7. Assunto 07
    8. Assunto 08
    9. Assunto 09
    10. Assunto 10
  4. Referências globais.

  5. Histórico.

2. CONTEÚDO


  1. Resumo do conteúdo:

    1. Descreve um resumo de como foi feito esse documento com as facilidade encontradas para produzi-lo e dificuldade encontrada.
  2. Introdução

    1. Objetivo:

      1. Para que o framework MarIcarai tenha o máximo possível de programadores utilizando-o preciso diminuir a curva de aprendizado. Para que a curva de aprendizado seja mais rápida possível é preciso aproveitar o máximo do conhecimento do novo programador, por isso devo aproveitar todas a rotinas prontas do lazarus porque as mesmas tem documentação.

      2. Documentação on-line do free pascal

      3. [🔙]

    2. Pre-requisitos:

      1. Ter o lazarus instalado no windows ou no linux, minha preferência é linux.

        1. Obs: A forma mais fácil de instalar o lazarus em todas as plataformas é usar o projeto fpcupdeluxe no sistema operacional de sua preferência.
      2. Domínio da linguagem pascal.

      3. Domínio das apis do sistema operacional destino do código.

      4. [🔙]

    3. Benefícios:

      1. O free pascal permite criar projetos em todos os sistemas operacionais existente no momento (25/10/2021).

      2. [🔙]

    4. Desvantagens.

      1. Para criar um aplicativo para vários sistemas operacionais é preciso abrir mão de projetos bons mais que existe somente em um sistema operacional.

      2. [🔙]

  3. CONTEÚDO ESTUDADO

    1. Estudar como o projeto free pascal foi criado.

      1. Como o free pascal padroniza o nome das unit?

        1. O nome das units gravadas em arquivos são sempre em minusculas.
        2. O nome das units usa a letra maiuscula para separar as palavras por exemplo:
          1. O arquivo sysinitpas.pp é a unit SysInitPas;
      2. Como o free pascal padroniza o nome de classes?

        1. Nome de classes sempre começa com letra maiuscula.
      3. Como o free pascal padroniza o nome de objetos instanciados, variáveis e atributos?

        1. Analisando o código classes.pp observei que não existe padrão, já que pascal ignora minúsculas e maiusculas, por isso posso adotar o padrão usado em java exceto no nome dos pacotes já que pascal é compilado:
          1. Nome de pacotes MarIcarai começa com as letras mi.NomeDoPacote;

          2. Nome de atributos privados começa com _ (underline) e a primeira letra é maiuscula e os atributos publicos ou protegidos começa com f e a letra seguinte maiuscula;

          3. As propriedade começa com letra maiuscula;

          4. Propriedade e métodos das classes começo com letra minusculas;

          5. Nome de variáveis e objetos (classes instanciadas) começa com letras minúsculas;

          6. Nome de classes, interfaces, tipos e constantes começa com letra maiusculas;

          7. Nome de palavras reservadas e identificadores começa com letra minusculas;

          8. Nome de constantes usar letras maiusculas e separadas com sinal de underline (_);

          9. Exemplo do padrão adotado no projeto MarIcarai:

            
                 const
            
                     NUMERO_PI = 3.14;
            
                 type
            
                     TMyClass  = class
                                    public
                                       fNome : String;   
            
                                    private
                                       _SomeVar : Integer;
            
                                    published 
                                       SomaVar read _SomeVar write _SomeVar;
                                       
                                    public    
                                       procedure  escrevaSomeVar(); 
                                 end;
            
                 var
                   i : Integer;                          
                   objeto : TMyClass;
            
                 begin
                   
                   objeto := Tclass.create();
                   objeto.fNome := 'Meu padrão';
                   objeto.SomaValor := 40;
                   objeto.escrevaSomeVar();
            
                   for i := 1 to 10 do
                   begin
                     writeLn(i);
                   end;
            
                 end.  
            
          10. .

        2. ..
      4. Como o Free pascal organiza suas pastas apos ser instalado.

        1. Ao instalar free pascal usando o projeto fpcupdeluxe ele criar dentro da pasta que você informa em fpcupdeluxe as seguintes pasta:

          1. SuaPasta/fpc

            1. Essa pasta contem o compilador e as units compiladas:
              1. A pasta SuaPasta/fpc/bin conta contém o compilador da plataforma default;
              2. A pasta SuaPasta/fpc/lib contém as units compiladas, pacotes dll (windows ), .so (linux), etc de todas as plataformas destino instalada;
                1. Obs: Aqui o sistema criar sub pastas para todas as versões instaladas;
              3. A pasta SuaPasta/fpc/share é usada para a documentação comum a todas as plataformas;
              4. O link SuaPasta/fpc/units aponta para a pasta SuaPasta/fpc/lib/fpc/3.3.1/units.
          2. SuaPasta/fpcsrc

            1. A pasta SuaPasta/fpcsrc/compiler contém os fontes do compilador;
            2. A pasta SuaPasta/fpcsrc/packages contém os fontes dos pacotes instalados do fpc
              1. Cada pacote em SuaPasta/fpcsrc/packages contém as seguintes pastas:
                1. SuaPasta/fpcsrc/packages/src

                  1. Para criar uma fonte multiplataforma é necessário escrever as units para cada plataforma.
                    1. Exemplo:
                      1. SuaPasta/fpcsrc/packages/rtl-console/src/win
                      2. SuaPasta/fpcsrc/packages/rtl-console/src/linux
                      3. SuaPasta/fpcsrc/packages/rtl-console/src/inc
                        1. Obs: A pasta SuaPasta/fpcsrc/packages/inc contém o código fonte comum em todas as plataformas** . SuaPasta/fpcsrc/packages
                2. SuaPasta/fpcsrc/packages/examples

                  1. Contém os exemplos de uso do pacote.
                3. SuaPasta/fpcsrc/packages/tests

                  1. .
                4. SuaPasta/fpcsrc/packages/units //Units compiladas por plataforma

            3. .
          3. .

        2. Ao instalar o Free pascal na plataforma linux x86_64 ele cria as seguintes pastas:

          1. /fpc/bin/x86_64-linux Nota: Binários da plataforma default

          2. /fpc/share/doc/fpc-3.2.2 Nota: Esta pasta contém exemplo de como usar free pascal

            1. Para testar os exemplos desta pasta é necessário usar o IDE /fpc/bin/x86_64-linux/fp no console.
            2. Para testar usando o ide lazarus é preciso criar um projeto lazarus e configurar para que os mesmos funcionem.
          3. /fpc/lib/fpc/3.2.2/units/

            1. i386-win32 Nota: Units compiladas da plataforma i386-win32
            2. units/x86_64-linux Nota: Units compiladas da plataforma x86_64-linux
            3. arm-android Nota: Units compiladas da plataforma arm-android
          4. O link units aponta para /fpc/lib/fpc/3.2.2/units/.

          5. A pasta /fpcsrc contém os fontes do projeto do compilador free pascal.

      5. Pacotes comuns em todos os sistemas operacionais:

        1. O pacote FCL (FCL - FREE COMPONENT LIBRARY) é usado para fornecer um conjunto completo de classes, de forma que um programador seja capaz de lidar com as tarefas de programação mais comuns; sempre que possível, a equipe FP tenta manter a compatibilidade do Delphi, de forma que o código escrito para um compilador possa ser compilado pelo outro.

        2. O pacote RTL é mantido pela equipe do free pascal. é importante conhecer todas as units deste pacote para que seja aproveitado o máximo possível do trabalho feito pela equipe free pascal.

          1. Compilando o RTL;

          2. A unidade objpas é feita para compatibilidade com Object Pascal implementado pelo Delphi. A unidade é carregada automaticamente pelo compilador Free Pascal sempre que o modo Delphi ou objfpc é inserido, seja através das opções de linha de comando -Sd ou -Sh ou com as diretivas {ParseError: KaTeX parse error: Expected 'EOF', got '}' at position 13: MODE Delphi}̲** ou **{ MODE OBJFPC};

          3. A unit printer foi implementada nas seguintes plataformas:

            1. Dos,
            2. Windows
            3. Linux
            4. OS/2
    2. Utilitários:

      1. O utilitário h2pas converte um arquivo de cabeçalho C em uma unidade pascal.
    3. Como o projeto free pascal implementa o conceito de multiplataforma?.

      1. Analisando o pacote rtl percebi que as units são implementada em todas as plataformas e são incluida através de duas includes sendo uma antes da palavra implementation e outra após a palavra implementation. A unit principal só tem programas comuns a todas as plataformas e nas includes tem a implementação em cada plataforma.
        1. Exemplo: 1.
    4. Exemplo do assunto 01.

      1. Descrição do exemplo

    5. Referências:

      1. Estudar como o projeto free pascal foi criado.
      2. Instalar com fpcupdeluxe
      3. FCL
      4. .
    6. [🔙]

    7. Assunto 02

      1. Descrição do conteúdo.

      2. Exemplo do assunto 02.

        1. Descrição do exemplo

      3. Referências:

        1. title
        2. title
      4. [🔙]

    8. Assunto 03

      1. Descrição do conteúdo.

      2. Exemplo do assunto 03.

        1. Descrição do exemplo

      3. Referências:

        1. title
        2. title
      4. [🔙]

    9. Assunto 04

      1. Descrição do conteúdo.

      2. Exemplo do assunto 04.

        1. Descrição do exemplo

      3. Referências:

        1. title
        2. title
      4. [🔙]

    10. Assunto 05

    11. Descrição do conteúdo.

    12. Exemplo do assunto 05.

      1. Descrição do exemplo

    13. Referências: 2. title 3. title

    14. [🔙]

    15. Assunto 06

    16. Descrição do conteúdo.

    17. Exemplo do assunto 06. 1. Descrição do exemplo

    18. Referências: 2. title 3. title

    19. [🔙]

    20. Assunto 07

    21. Descrição do conteúdo.

    22. Exemplo do assunto 07. 1. Descrição do exemplo

    23. Referências: 2. title 3. title

    24. [🔙]

    25. Assunto 08

    26. Descrição do conteúdo.

    27. Exemplo do assunto 08. 1. Descrição do exemplo

    28. Referências: 2. title 3. title

    29. [🔙]

    30. Assunto 09

    31. Descrição do conteúdo.

    32. Exemplo do assunto 09. 1. Descrição do exemplo

    33. Referências: 2. title 3. title

    34. [🔙]

    35. Assunto 10

      1. Descrição do conteúdo.

      2. Exemplo do assunto 10.

        1. Descrição do exemplo

      3. Referências:

        1. title
        2. title
      4. [🔙]

    36. [🔙]

  4. REFERÊNCIAS GLOBAIS

    1. Site oficial para produzir este documento

    2. Dica de como criar programa multiplataforma

    3. Guia rápido de referência da linguagem Pascal Versão Free Pascal

    4. Free Pascal Reference guide

    5. Hierarquia do sistema de arquivos Linux

    6. ERRNO (3) Manual do programador Linux ERRNO (3)

    7. Unit SysUtils reference

    8. Unit lazFileUtils for linux

    9. O que é wrappers?

    10. Sintaxe modo FPC

    11. Acesso a arquivos com free pascal

    12. Pasta com todas as units da LCL Lazarus

    13. Dicas de como usar o IDE Lazarus

    14. [🔙]

  5. HISTÓRICO

  6. 26/10/2021 - [x] Criar este documento baseado no modelo03.md ; - [x] Escrever tópico Objetivos; - [x] Escrever tópico Pre-requisitos - [x] Escrever tópico Benefícios - [x] Escrever tópico desvantagens

    - <text onclick="goBack()">[🔙]</text>
    
    1. 27/10/2021 - [x]Instalar o pacote PasDoc - [ ] Escrever tópico Conteúdo
      • Estudar como o projeto free pascal foi criado.
    - [ ] Escrever tópico Exemplos
    - [ ] Escrever tópico Referências
    - [ ] Atualizar o histórico deste documento.
    - [ ] Testar este documento depois após uma semana de concluído.
    

🔝🔝