prog1:estilo
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| prog1:estilo [2024/03/07 21:06] – link conduta beco | prog1:estilo [2024/03/07 21:47] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 3: | Line 3: | ||
| # Como contribuir | # Como contribuir | ||
| - | Sua contribuição ao código é essencial | + | Sua contribuição ao código é essencial |
| + | |||
| + | Para que suas contribuições sejam maximizadas (o que impacta positivamente sua nota), siga este pequeno guia de 'Como contribuir' | ||
| # Iniciando | # Iniciando | ||
| Line 9: | Line 11: | ||
| Tenha certeza de que sua conta está devidamente configurada. Cheque os seguintes itens: | Tenha certeza de que sua conta está devidamente configurada. Cheque os seguintes itens: | ||
| - | * Cadastre-se no GitHub | + | * Cadastre-se no servidor Draco |
| - | * Nas configurações do git em sua máquina local confira | + | * Cadastre-se no Dropbox |
| - | * Siga o código de [conduta do bom programador | + | * Cadastre-se no grupo por email Contauto (google groups, prefira gmail) |
| - | * Faça um _fork_, implemente | + | * Cadastre-se no GitHub |
| - | * Para um _pull request_ ser aceito é **essencial** que as alterações sejam em doses bem pequenas | + | * Baixe para seu computador/ |
| - | * A requisição | + | - Leia-os atentamente. Lá as explicações são muito mais detalhadas que as que você lerá neste pequeno guia |
| - | * Faça testes à vontade | + | * No Draco, crie uma chave SSH |
| + | * Adicione sua chave SSH pública para login no Github | ||
| + | * Nas configurações do git no Draco, | ||
| + | * Nas configurações do GitHub: | ||
| + | - coloque seu nome completo no perfil | ||
| + | - habilite mostrar suas contribuições privadas nas estatísticas | ||
| + | - aceite o convite para o time do BecoSystems da disciplina/ | ||
| + | - acesse o link do GitHub classroom para iniciar uma atividade (pegue o link com o professor) | ||
| + | * Siga o código de [Código de Conduta | ||
| + | |||
| + | # Repositório | ||
| + | |||
| + | Os trabalhos podem ser em grupos ou individuais, | ||
| + | |||
| + | ## Trabalhos pelo Classroom (assignments) | ||
| + | |||
| + | * O professor enviará | ||
| + | * Não tem _upstream_. | ||
| + | * Todos devem fazer o clone do repositório no Draco. | ||
| + | * Ao final, faça também um clone (ou copie a pasta clonada em _rascunhos_) na pasta _trabalhos_ no Draco. | ||
| + | |||
| + | ## Trabalhos em grupos criados manualmente (BecoSystems) | ||
| + | |||
| + | * Os alunos se dividem em grupos | ||
| + | * Não tem _upstream_. | ||
| + | * Todos devem fazer o clone do repositório no Draco. | ||
| + | * Ao final, faça também | ||
| + | |||
| + | ## Trabalhos em grupo com _upstream_ | ||
| + | |||
| + | * O professor cria o repositório _upstream_ e adiciona os colaboradores com permissão de apenas leitura. | ||
| + | * Um representante de cada time fará um _fork_ | ||
| + | * Este representante adiciona todos os outros membros do time como colaboradores deste _fork_. Ninguém mais faz _fork_. | ||
| + | * O representante também configura o seu _fork_ para permitir a criação de _issues_. | ||
| + | * Os _issues_ no _upstream_ são usados para comunicar com todos os times e tratar de problemas | ||
| + | * Os _issues_ no _origin_ (repositório do _fork_ feito por cada time) são usados para comunicação interna do time, para tratar problemas locais. | ||
| + | * O código vai sendo colaborativamente adicionado no _upstream_ pelo professor, conforme | ||
| + | * Todos devem fazer o clone do repositório no Draco. | ||
| + | * Ao final, faça também um clone (ou copie a pasta clonada em _rascunhos_) na pasta _trabalhos_ no Draco. | ||
| + | |||
| + | ## Trabalhos individuais com _upstream_ | ||
| + | |||
| + | * O professor cria o repositório _upstream_ e adiciona os colaboradores com permissão de apenas leitura. | ||
| + | * Cada aluno faz seu _fork_ e trabalha de forma individual. | ||
| + | * O código vai sendo colaborativamente adicionado no _upstream_ pelo professor, conforme cada aluno faz um _pull request_ | ||
| + | * Todos devem fazer o clone do repositório no Draco. | ||
| + | * Ao final, faça também um clone (ou copie a pasta clonada em _rascunhos_) na pasta _trabalhos_ no Draco. | ||
| + | |||
| + | # Antes de mais nada! | ||
| + | |||
| + | * Confira se você está trabalhando no ramo **feature-nome** ou **develop** | ||
| + | * **NUNCA** (never, jamais, mai, noot, nie, em tempo algum) o _master_ | ||
| + | |||
| + | # Editor de textos | ||
| + | |||
| + | O editor de textos usados é o _vi_ (lê-se " | ||
| + | |||
| + | O _vi_ é um excelente editor para quem o conhece. Para quem não o conhece, é difícil e pode ser muito frustrante. | ||
| + | |||
| + | Felizmente existe um excelente arquivo em _PDF_ na pasta hydrabox com explicações sobre a maioria dos comandos. Não deixe de ler. | ||
| + | |||
| + | # Atividade registrada | ||
| + | |||
| + | Tenha certeza de seguir estas recomendações para ter um maior aproveitamento: | ||
| + | |||
| + | * Se possível, faça login todo dia no Draco | ||
| + | * Os comandos lá digitados são registrados | ||
| + | * Leia o arquivo sobre Linux no hydrabox | ||
| + | * Configure sua conta, ajuste seu arquivo _.project_ com seus hobbies, faça bom uso de toda a ferramenta, explore, aprenda. | ||
| + | * Confira suas estatísticas no GitHub: seu perfil pessoal e as estatísticas de cada repositório que estiver trabalhando. Tenha certeza que seus _commits_ estão sendo registrados em seu nome e que aparece nos gráficos. | ||
| + | * Desafio: Mantenha a grade do seu perfil com quadradinhos verdinhos durante todo o semestre! E não pare mais: incorpore o GitHub em todos seus projetos de faculdade e leve-o para sua vida. É a rede social do programador, | ||
| # Arquivos no repositório | # Arquivos no repositório | ||
| - | * COPYING | + | * Arquivo fonte e arquivos de bibliotecas |
| - | * GPL-pt_BR.txt | + | * As extensões são, fonte e binário, respectivamente (exemplo para exercício 11): |
| - | * engines.ini | + | |
| - | * livro.txt | + | - Biblioteca em C: ex11.h |
| - | * wb2uci.eng | + | - Linguagem C++: ex11.cpp e ex11.out |
| - | * winboard.ini | + | - Biblioteca em C++: ex11.hpp |
| - | * xadreco-icon.png | + | - Linguagem Rust: ex11.rs e ex11 |
| - | * xadreco-logo1.jpg | + | - Linguagem Zig: ex11.zig e ex11 |
| - | * xadreco.c: código fonte em C | + | - PROLOG: ex11.pl (e se houver, ex11.pl.x) |
| - | * xadreco.h: biblioteca | + | - Portugol: ex11.gpt e ex11.gpt.x |
| - | * zippy-frases.txt | + | - Texto Markdown: ex11.md |
| + | - Texto Wiki: ex11.wiki | ||
| + | - Bash Script: ex11.sh | ||
| + | - Assembly: ex11.s (sintaxe AT&T) | ||
| * AUTHORS: lista os autores do programa (em grupo ou individual) | * AUTHORS: lista os autores do programa (em grupo ou individual) | ||
| * LICENSE: a licença do programa (prefira GNU GPL v2, MIT ou BSD-3) | * LICENSE: a licença do programa (prefira GNU GPL v2, MIT ou BSD-3) | ||
| - | * VERSION: contém o número da versão atual (modificado automaticamente pelo _make_) | + | * VERSION: contém o número da versão atual (de preferência |
| * makefile: o _script_ rodado pelo comando _make_ | * makefile: o _script_ rodado pelo comando _make_ | ||
| - | * readme.txt | ||
| * README.md: em sintaxe de Markdown, contém a " | * README.md: em sintaxe de Markdown, contém a " | ||
| - O que é o programa | - O que é o programa | ||
| Line 43: | Line 117: | ||
| - Licença | - Licença | ||
| - Referências: | - Referências: | ||
| + | * Outros arquivos relevantes | ||
| * Índice _ctags_ opcional | * Índice _ctags_ opcional | ||
| * _.gitignore_ : faz o git ignorar certos arquivos | * _.gitignore_ : faz o git ignorar certos arquivos | ||
| Line 67: | Line 142: | ||
| int p; /* a really though condition */ | int p; /* a really though condition */ | ||
| | | ||
| - | p = !(is_bar[0] || isBar[1]); | + | p = !(is_bar[0] || is_bar[1]); |
| - | /* check if it's beer number 2 and not in some funny condition */ | ||
| if(is_bar[x] == 2 && !p) | if(is_bar[x] == 2 && !p) | ||
| { | { | ||
| Line 79: | Line 153: | ||
| } | } | ||
| + | ``` | ||
| + | |||
| + | ### PROLOG | ||
| + | |||
| + | * Use 4 espaços para indentar (não use _TAB' | ||
| + | * Não use `;` para `OR`. Prefira repetir a regra (ou fato, claro). | ||
| + | * Deixe um espaço entre a cabeça da regra e o `se` (`:-`) | ||
| + | |||
| + | Um exemplo de trecho de código seria: | ||
| + | |||
| + | ``` | ||
| + | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| + | % Aqui vai a licenca, copyright, etc. | ||
| + | % Uma breve descrição do programa | ||
| + | % Autor, data, email para contato | ||
| + | |||
| + | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| + | % Sessao de modulos | ||
| + | |||
| + | :- dynamic([mulher/ | ||
| + | |||
| + | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| + | % Sessao da base de conhecimento estatico | ||
| + | |||
| + | % Lista de homens, vivos e mortos | ||
| + | homem(socrates). | ||
| + | homem(platao). | ||
| + | |||
| + | % Lista de homens ainda vivos | ||
| + | vivo(platao). | ||
| + | |||
| + | % Lista de objetos inanimados | ||
| + | pedra(diamante). | ||
| + | pedra(rubi). | ||
| + | |||
| + | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| + | % Sessao de regras sobre a mortalidade | ||
| + | |||
| + | % indica as condicoes necessarias para um objeto ser mortal | ||
| + | % caso homem | ||
| + | mortal(X) :- | ||
| + | vivo(X), | ||
| + | homem(X). | ||
| + | |||
| + | % caso mulher (clausula dinamica) | ||
| + | mortal(X) :- | ||
| + | vivo(X), | ||
| + | mulher(X). % BUG: lembrar de fazer assert! | ||
| + | ... | ||
| ``` | ``` | ||
| Line 89: | Line 212: | ||
| ### Comentários | ### Comentários | ||
| - | * Use comentários /* estilo C */ | + | * Use comentários |
| - | * Coloque um espaço após o /* e um antes do */ | + | * Coloque um espaço após o `/*` e um antes do `*/` |
| * Faça comentários _em linha_ nas declarações de variável. `int i; /* indice geral */` | * Faça comentários _em linha_ nas declarações de variável. `int i; /* indice geral */` | ||
| * Evite comentários em linha em outros locais | * Evite comentários em linha em outros locais | ||
| Line 97: | Line 220: | ||
| * Não use acentos (nem c-cedilhas) no código ou comentários | * Não use acentos (nem c-cedilhas) no código ou comentários | ||
| * Use as palavras nos comentários: | * Use as palavras nos comentários: | ||
| - | - /* TODO: alguma tarefa */ : para indicar algo que falta fazer | + | - `/* TODO: alguma tarefa */` : para indicar algo que falta fazer |
| - | - /* BUG: esta errado assim e assado */ : para indicar um bug conhecido que precisa ser corrigido no futuro. | + | - `/* BUG: esta errado assim e assado */` : para indicar um bug conhecido que precisa ser corrigido no futuro. |
| ### Comentários DOXYGEN | ### Comentários DOXYGEN | ||
| Line 161: | Line 284: | ||
| * Variáveis com letras maiúsculas somente se: | * Variáveis com letras maiúsculas somente se: | ||
| - São PROLOG, claro ;) | - São PROLOG, claro ;) | ||
| - | - São MACROS (logo não são _variáveis_) em C (exemplo: `#define CINCO 1`) | + | - São MACROS (logo não são _variáveis_) em C (exemplo: `#define CINCO 5`) |
| - São _MUIIIITO_ importantes e precisam de algum destaque. Não tente usar assim, pois você provavelmente não vai convencer ninguém. ;) | - São _MUIIIITO_ importantes e precisam de algum destaque. Não tente usar assim, pois você provavelmente não vai convencer ninguém. ;) | ||
| * Use nomes claros para as variáveis | * Use nomes claros para as variáveis | ||
| Line 167: | Line 290: | ||
| * Prefira nomes que demonstrem o conceito geral do domínio, ao invés dos padrões que eles implementam. | * Prefira nomes que demonstrem o conceito geral do domínio, ao invés dos padrões que eles implementam. | ||
| * Não faça nomes gigantes. Um tamanho _máximo_ que já não fica tão bom é até 15 caracteres. Tente nomes menores, até 10 no pior caso. | * Não faça nomes gigantes. Um tamanho _máximo_ que já não fica tão bom é até 15 caracteres. Tente nomes menores, até 10 no pior caso. | ||
| + | * Use o estilo _snake_, ou seja, as variáveis, caso precisem de nome composto, são criadas todas em minúsculas e com um sublinhado separando-os. Exemplo `taxa_anual`. Não use o estilo camelo (ex. `taxaAnual`) e muito menos misture estilos. | ||
| * Use sublinhados para _sufixos_ apenas se for criar variáveis que tenham alguma característica em comum. Exemplo: `salario_antes` e `salario_depois`. Se existirem muitas características em comum em um tipo de dados, considere agrupar com _struct_ | * Use sublinhados para _sufixos_ apenas se for criar variáveis que tenham alguma característica em comum. Exemplo: `salario_antes` e `salario_depois`. Se existirem muitas características em comum em um tipo de dados, considere agrupar com _struct_ | ||
| * Não coloque o _tipo_ no nome da variável. Exemplo: `vetor_de_alunos`. | * Não coloque o _tipo_ no nome da variável. Exemplo: `vetor_de_alunos`. | ||
| - | * Coloque `t_` no início | + | * Coloque `_t` no fim de _typedef_. Exemplo: `typedef int meuint_t;` |
| * Coloque `st_` no início de _structs_. Exemplo: `struct st_concreto { ... };` | * Coloque `st_` no início de _structs_. Exemplo: `struct st_concreto { ... };` | ||
| * Coloque `s` no início de variáveis _string_. Exemplo: `char snome[MAX]; | * Coloque `s` no início de variáveis _string_. Exemplo: `char snome[MAX]; | ||
| - | * Coloque `p` no início de ponteiros. Exemplo: `t_carro | + | * Coloque `p` no início de ponteiros. Exemplo: `carro_t |
| * Nomeie uma _enum_ (enumeração) pelo substantivo comum do objeto que ela enumera. | * Nomeie uma _enum_ (enumeração) pelo substantivo comum do objeto que ela enumera. | ||
| Line 193: | Line 317: | ||
| * A função `int main(void)` ou `int main(int argc, char *argv[])` | * A função `int main(void)` ou `int main(int argc, char *argv[])` | ||
| * As outras funções, de preferência em uma ordem que faça um mínimo de sentido com o próprio fluxo do programa | * As outras funções, de preferência em uma ordem que faça um mínimo de sentido com o próprio fluxo do programa | ||
| + | |||
| + | #### Em PROLOG | ||
| + | |||
| + | * Comentários iniciam como em C (_copyright_, | ||
| + | * Os módulos lidos | ||
| + | * As diretrizes (_dynamic_, etc.) | ||
| + | * Os fatos | ||
| + | * As regras, em uma ordem que ajude a clarificar a sequência lógica da solução engedrada | ||
| # Ciclo de trabalho | # Ciclo de trabalho | ||
| * Ligou o computador, **primeira** vez neste repositório | * Ligou o computador, **primeira** vez neste repositório | ||
| - | - Tudo configurado no GitHub e na sua máquina local? | + | - Tudo configurado no GitHub e no Draco? |
| - | - Repositório criado no GitHub com _fork_ | + | - Repositório criado no GitHub |
| - | - Faça o _clone_ | + | - Faça o _clone_ |
| - | - Crie seu ramo _feature-nome_ | + | - Crie seu ramo _feature-nome_ |
| - | - Siga a partir | + | - Crie o esqueleto |
| + | - Adicione (_git add_) o fonte criado | ||
| + | - Faça o primeiro _commit_ do ramo _feature-nome_ | ||
| + | - Vá para o _develop_ | ||
| + | - Faça o _merge_ com o _feature-nome_ | ||
| + | - Faça o primeiro _push_ do _develop_ | ||
| + | - Coloque a _tag_ `v0.0` e novo `push` das _tags_. | ||
| + | - Faça o _merge_ com o _master_ | ||
| + | - E faça o primeiro _commit_ e _push_ no master. | ||
| * Ligou o computador para trabalhar do **segundo** dia em diante | * Ligou o computador para trabalhar do **segundo** dia em diante | ||
| - Atualize todos os ramos remotos (_master_ e _develop_) | - Atualize todos os ramos remotos (_master_ e _develop_) | ||
| - Resolva conflitos se houver | - Resolva conflitos se houver | ||
| - | - Vá para seu ramo de trabalho _feature-nome_ ou _develop_ | + | - Vá para seu ramo de trabalho _feature-nome_ |
| - (1) Edite o arquivo fonte no _vi_ | - (1) Edite o arquivo fonte no _vi_ | ||
| - (2) Compile (_gcc_ ou _make_, ou teste no _swipl_) | - (2) Compile (_gcc_ ou _make_, ou teste no _swipl_) | ||
| Line 215: | Line 355: | ||
| * Faça _merge_ do _feature-nome_ com o _develop_ | * Faça _merge_ do _feature-nome_ com o _develop_ | ||
| * Resolva conflitos se houver | * Resolva conflitos se houver | ||
| - | * Teste o programa muitas vezes e corrija se necessário | ||
| * Faça o _push_ do _develop_ para o GitHub | * Faça o _push_ do _develop_ para o GitHub | ||
| - | * Ou, se usou apenas o _develop_, faça o _push_ | + | |
| - | | + | |
| * Vá para o _master_ e atualize-o | * Vá para o _master_ e atualize-o | ||
| * Faça _merge_ do _develop_ com o _master_ | * Faça _merge_ do _develop_ com o _master_ | ||
| * Resolva conflitos se houver | * Resolva conflitos se houver | ||
| - | * Teste o programa muitas vezes e corrija se necessário | ||
| * Faça o _push_ do _master_ para o GitHub | * Faça o _push_ do _master_ para o GitHub | ||
| - | * Tudo pronto, | + | * Crie uma _tag_ e faça o _push_ das _tags_ |
| + | * Se houve alterações por conflito, o _master_ está na frente do _develop_, então passe o _merge_ para baixo, para o _develop_ | ||
| + | - Vá para o _develop_, atualize-o e _merge_ com _master_ | ||
| + | - Vá para o _feature-nome_, | ||
| # Teste | # Teste | ||
| - | * Não tenha pressa de fazer _push_! | + | * Não tenha pressa de fazer _commit_ e _push_! |
| * Compile. Use todas as chaves de aviso que o _gcc_ pode oferecer. O _gcc_ é seu amigo! | * Compile. Use todas as chaves de aviso que o _gcc_ pode oferecer. O _gcc_ é seu amigo! | ||
| * Crie páginas com mensagens de erro com o comando _sprunge_ para discutir nos _issues_ se necessário | * Crie páginas com mensagens de erro com o comando _sprunge_ para discutir nos _issues_ se necessário | ||
| - | * Use _makefile_ para compilar seus testes | + | * Use _makefile_ para compilar seus exercícios |
| - Não deixe de conhecer as opções do _gcc_ para compilação. Este é um comando fundamental em vários sistemas operacionais, | - Não deixe de conhecer as opções do _gcc_ para compilação. Este é um comando fundamental em vários sistemas operacionais, | ||
| * Teste! Rode o programa, faça entrada de dados, veja se o que acabou de programar realmente faz o que você deseja, e se não quebrou nada em outra função do programa. | * Teste! Rode o programa, faça entrada de dados, veja se o que acabou de programar realmente faz o que você deseja, e se não quebrou nada em outra função do programa. | ||
| - | * Tudo ok? Então faça o _push_! | + | * Tudo ok? O programa compila sem erros e avisos? Está quase na hora do _commit_ então... Mas falta algo importante: indentação! |
| - | * Faça suas modificações chegarem até o _master_ e então faça o _pull request_ do seu _master_ (_origin_) para o _master_ do _upstream_. | + | * Use um formatador automático (veja o _astyle_). Verifique o código. Agora sim, além de compilar sem erros, também está um **CÓDIGO LIMPO**. |
| - | * No _pull request_ coloque um título descritivo. | + | * Então |
| + | * Você pode editar mais, fazer mais _commits_. No final do trabalho, ou quando achar que é hora, faça o _push_! | ||
| + | * Se o trabalho exige _pull request_, faça suas modificações chegarem até o _master_ e então faça o _pull request_ do seu _master_ (_origin_) para o _master_ do _upstream_. | ||
| + | * No _pull request_ coloque um título descritivo. Se seu trabalho é em grupo, coloque também no início do título o número do grupo. | ||
| # Faça uma boa mensagem de commit | # Faça uma boa mensagem de commit | ||
| - | * Se é um pequeno _commit_ tudo bem abreviar | + | * Se é um pequeno _commit_ tudo bem abreviar com o comando `git cm "uma descricao do que este commit faz em ate 50 caracteres" |
| - | * Mas se é um _commit_ que vai influenciar muito o código de outros _ramos_ ou que vai ser usado para _pull request_ então é importante escrever uma boa mensagem. Neste caso, **não** use o comando abreviado. Use os comandos: | + | * Mas se é um _commit_ que vai influenciar muito o código de outros _ramos_ ou que vai ser usado para _pull request_ então é importante escrever uma boa mensagem. Neste caso, **não** use o comando abreviado |
| - `git add arquivo` : se necessário adicionar algum arquivo | - `git add arquivo` : se necessário adicionar algum arquivo | ||
| - | - `git commit` : sem abreviação e sem mensagem. Este comando vai abrir o _vi_ (ou seu editor preferido) | + | - `git commit` : sem abreviação e sem mensagem. Este comando vai abrir o _vi_ para você digitar uma mensagem de _commit_ maior. |
| * Na primeira linha, escreva um título do _commit_ com até 50 caracteres, como você já está acostumado. | * Na primeira linha, escreva um título do _commit_ com até 50 caracteres, como você já está acostumado. | ||
| * Pule uma linha. | * Pule uma linha. | ||
| * Da terceira linha para baixo, descreva com mais detalhes tudo o que você fez, o que este _commit_ inclui, o que muda, qual funcionalidade é acrescentada ou _bug_ é resolvido. | * Da terceira linha para baixo, descreva com mais detalhes tudo o que você fez, o que este _commit_ inclui, o que muda, qual funcionalidade é acrescentada ou _bug_ é resolvido. | ||
| - | * Saia com `:x` (no _vi_) para salvar e fazer o _commit_ | + | * Saia com `:x` para salvar e fazer o _commit_ |
| - | * Saia com `:q!` (no _vi_) para abortar a edição e **não** fazer o _commit_ | + | * Saia com `:q!` para abortar a edição e **não** fazer o _commit_ |
| * Linhas iniciadas com \# são ignoradas pelo _git_ como sendo comentários e não são escritas no _commit_. | * Linhas iniciadas com \# são ignoradas pelo _git_ como sendo comentários e não são escritas no _commit_. | ||
| * Exemplo de uma boa mensagem de _commit_: | * Exemplo de uma boa mensagem de _commit_: | ||
| Line 293: | Line 436: | ||
| *.c text | *.c text | ||
| *.h text | *.h text | ||
| - | *.txt text | ||
| - | *.ini text | ||
| - | *.eng text | ||
| *.x binary | *.x binary | ||
| - | *.jpg binary | ||
| - | *.png binary | ||
| ``` | ``` | ||
| Line 306: | Line 444: | ||
| # Obrigado! | # Obrigado! | ||
| - | Agora é com você! | + | Agora é com você! |
| Atenciosamente, | Atenciosamente, | ||
| Prof. Dr. Ruben Carlo Benante \<< | Prof. Dr. Ruben Carlo Benante \<< | ||
| - | Autor do Xadreco | + | |
| + | |||
| </ | </ | ||
prog1/estilo.1709856389.txt.gz · Last modified: by beco
