Escolar Documentos
Profissional Documentos
Cultura Documentos
Version 2.0.2
Resumo: Este documento descreve a norma aplicável (Norm) aos 42. A padrão de programação define um
conjunto de regras a seguir ao escrever código. Você deve sempre respeite a Norma para todos os projetos C na
escola, salvo especificação em contrário.
Conteúdo
Eu prefácio 2
Eu. 1 Por que impor um padrão? . . . . . . . . . . . . . . . . . . . . . . . . . 2
Eu. 2 A norma para submissões... . . . . . . . . . . . . . . . . . . . . . . 2
Eu. 3 sugestões... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Eu. 4 avisos legais... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
II O Norm 3
II. 1 Denominação... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
II. 2 Formatação... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
II. 3 parâmetros de funções... . . . . . . . . . . . . . . . . . . . . . . . . . 5
II. 4 Funções... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
II. 5 Typedef, estrutura, enum e união . . . . . . . . . . . . . . . . . . . . . 5
II. 6 cabeçalhos... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
II. 7 Macros e Pré-processadores... . . . . . . . . . . . . . . . . . . . . . . 6
II. 8 Coisas proibidas! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
II. 9 Comentários... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
II.10 Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
II. Show 11... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Capítulo I
Foreword
Este documento descreve a norma aplicável (Norm) em 42. Um padrão de programação
define um conjunto de regras a seguir ao escrever código. Você deve sempre respeitar o Norm por
todos os projetos C na escola, salvo especificação em contrário.
Eu. 1 Por que impor um padrão?
Os dois principais objetivos da Norma: 1. Para formatar e padronizar o seu código para que qualquer pessoa
(estudantes, funcionários e até você mesmo) podem lê-los e entendê-los facilmente. 2. Para te guiar
por escrever código curto e simples.
Eu. 2 A norma para submissões
Todos os seus arquivos C devem respeitar o Normal da escola. Será verificado pelo seu aluno. Se
cometeste qualquer erro Normal, vais receber um 0 pelo exercício ou até mesmo pelo projeto todo.
Durante as avaliações pelos pares, o seu aluno terá de lançar a "Norminette" presente em
as lixeiras da sua apresentação. Apenas a parte obrigatória da Norma será verificada pelo
"Norminette".
I. 3 sugestões
Vais perceber em breve que o Norm não é tão intimidador quanto parece. Na secção
ao contrário, vai ajudar-te mais do que imaginas. Isso permitirá que você leia o código dos seus colegas de
turma
mais facilmente e vice-versa. Um arquivo fonte contendo um erro de Norm será tratado o
da mesma forma que um arquivo fonte contendo 10 erros de Normalização. Aconselhamos vivamente que
mantenha o
Norm em mente enquanto codifica - mesmo que sintas que isso te está a abrandar no início. Em
tempo, vai tornar-se um reflexo.
Eu. 4 avisos legais
"Norminette" é um programa, e todos os programas estão sujeitos a bugs. Você deve encontrar um,
Por favor, denuncie na seção apropriada do fórum. No entanto, como a "Norminette" sempre
prevalece, todos os seus envios devem se adaptar aos seus bugs.
2
Capítulo II
O Normal
II. 1 Denominação
Parte obrigatória
Parte do conselho
• Objetos (variáveis, funções, macros, tipos, arquivos ou diretórios) devem ter o máximo nomes
explícitos ou mais mnemónicos possível. Apenas "contadores" podem ser nomeados para o seu
curtindo.
• As abreviações são toleradas desde que seja para encurtar o nome original, e isso
permanece inteligível. Se o nome contiver mais do que uma palavra, as palavras serão Separados por '_'.
• Todos os identificadores (funções, macros, tipos, variáveis, etc) devem estar em inglês.
• Qualquer utilização de variável global deve ser justificável
II. 2 Formatação
Parte obrigatória
Todos os seus arquivos devem começar com o cabeçalho padrão da escola (a partir da primeira linha do
arquivo). Este cabeçalho está disponível por omissão com o emacs e o vim nas lixeiras.
Você deve indentar o seu código com tabulações de 4 espaços. Isto não é o mesmo que 4 espaços
comuns, estamos a falar de tabulações reais aqui.
Cada função deve ter no máximo 25 linhas, sem contar com os próprios suportes encaracolados da
função.
Cada linha deve ter no máximo 80 colunas de largura, comentários incluídos. Aviso: uma tabulação não
conta como uma coluna, mas como o número de espaços que representa.
Uma instrução por linha.
Uma linha vazia deve estar vazia: sem espaços ou tabulações.
Uma linha nunca pode acabar com espaços ou tabulações.
Você precisa começar uma nova linha após cada suporte encaracolado ou fim da estrutura de controle.
A menos que seja o fim de uma linha, cada vírgula ou ponto e vírgula deve ser seguido por um espaço.
Cada operador (binário ou ternário) ou operando deve ser separado por um e apenas um espaço.
Cada palavra-chave C deve ser seguida por um espaço, exceto por palavras-chave para tipos (como int,
char, float, etc. ), bem como tamanho.
Cada declaração variável deve ser marcada na mesma coluna.
Os asteriscos que acompanham ponteiros devem estar presos a nomes de variáveis.
Uma única declaração variável por linha.
Não podemos colar uma declaração e uma inicialização na mesma linha, exceto para variáveis globais e
variáveis estáticas.
As declarações devem estar no início de uma função, e devem ser separadas por uma linha vazia.
Não pode haver uma linha vazia entre declarações ou implementações.
Várias atribuições são estritamente proibidas.
Pode adicionar uma nova linha após uma estrutura de instrução ou controlo, mas terá de adicionar uma
indentação com parênteses ou operador de afetação.
Os operadores devem estar no início de uma linha.
II. 4 Funções
Parte obrigatória
Parte do conselho
Os identificadores das suas funções devem estar alinhados dentro de um mesmo arquivo. O mesmo se
aplica aos arquivos de cabeçalho.
II. 6 cabeçalhos
Parte obrigatória
As coisas permitidas nos arquivos de cabeçalho são: inclusões de cabeçalho (sistema ou não),
declarações, define, protótipos e macros.
Tudo include (. c ou . h) deve estar no início do arquivo.
Protegeremos cabeçalhos de inclusões duplas. Se o arquivo for ft_foo. H, é espectador macro é FT_FOO_H.
Os protótipos das funções devem estar exculivamente em . Ficheiros H.
Inclusões de cabeçalho não usadas (. h) são proibidos.
Parte de conselhos
Todas as inclusões de cabeçalho devem ser justificadas em um . arquivo c, bem como em um. arquivo h.
II. 9 comentários
Parte obrigatória
Tens permissão para comentar o teu código nos teus ficheiros fonte.
Os comentários não podem estar dentro dos corpos das funções.
Comentários começam e terminam por uma única linha. Todas as linhas intermediárias devem alinhar-
se e começar por "**".
Sem comentários com //.
Parte do conselho
Seus comentários devem estar em inglês. E eles devem ser úteis.
Um comentário não pode justificar uma função "bastardo".
II.10 Arquivos
Parte obrigatória
Você não pode incluir um arquivo .c .
Você não pode ter mais de 5 definições de função em um arquivo .c .
II. 11 Makefiles
Parte obrigatória
$(NOME), clean, fclean, re e todas as regras são obrigatórias.
Se o makefile voltar a ligar, o projeto será considerado não funcional.
No caso de um projeto multibinário, além das regras que vimos, deve ter uma regra que compila ambos
os binários, bem como uma regra específica para cada binário compilado.
No caso de um projeto que chama uma biblioteca de funções (por exemplo: libft), o seu makefile deve
compilar esta biblioteca automaticamente.
Todos os arquivos de origem que precisa para compilar o seu projeto devem ser explicitamente
nomeados no seu Makefile.