ℹ️ Uma Biblioteca estática em C com funções padrão recodificadas
O Primeiro projeto na 42. Consiste em uma biblioteca estática em C com funções padrão da linguagem recodificadas que rodam e compilam usando um Makefile. A biblioteca pode ser usada de apoio em projetos futuros, uma vez que não é permitido o uso das funções originais. Uma vez que tenha terminado o projeto, você pode (e deve) incluir mais funções à sua Libft.
Divisão do projeto
Nessa primeira parte, você deve recodificar um conjunto de funções da libc, como definidas em seu manual (man). Suas funções precisam apresentar o mesmo protótipo e compartamento das originais. Além disso o nome das funções devem apresenar o prefixo “ft_”. Por exemplon, a strlen se torna ft_strlen. **ft_ vem de forty-two(42).
• isalpha • isdigit • isalnum • isascii • isprint • strlen • memset • bzero • memcpy • memmove • strlcpy • strlcat • toupper • tolower • strchr • strrchr • strncmp • memchr • memcmp • strnstr • atoi • calloc • strdup
Nessa segunda parte, você deve codar um punhado de funções que ou não estão inclusas na libc ou foram incluídas de uma outra forma. Algumas dessas funções podem ser úteis para escrever as funções da parte I.
• substr • strjoin • strtrim • split • itoa • strmapi • striteri • putchar_fd • putstr_fd • putendl_fd • putnbr_fd
Cada função dever ter no máximo 25 linhas, não contando suas próprias chaves '{}'.
Cada linha deve ter no máximo 80 colunas de largura, comentários incluídos.
Uma função pode ter no máximo 4 parâmetros definidos.
Não podem ser declaradas mais que 5 variáveis por função.
Não é permitido o uso de: for , do...while , switch , case , goto ,
operadores ternários como `?' e VLAs - Matrizes de comprimento variável.
A norminette (como chamamos a norma na 42) é feita em python e é open source.
Além da norma padrão, o projeto tem alguns requisitos próprios
É proibido declarar variáveis globais.
Usar o comando libtool para criar a biblioteca é proibido.
O Makefile deve compilar com as flags -Wall, -Wextra e -Werror
Essas são as funções presentes na minha Libft atualmente - algumas não fazem parte do subject - já que podemos posteriormente adicionar funções para usar em outros projetos.
• ft_isalpha - checa se é um caractere alfabético.
• ft_isdigit - checa se é um digito (0 a 9).
• ft_isalnum - checa se é um caractere alfanumérico.
• ft_isascii - checa se é um caractere que faz parte da tabela ASCII tradicional.
• ft_isprint - checa se é um caractere printável.
• ft_toupper - converte o caractere para maiúsculo.
• ft_tolower - converte o caractere para minúsculo.
• ft_memset - enche o bloco de memória com um mesmo byte.
• ft_strlen - calcula o tamanho de uma string.
• ft_bzero - preenche uma string com zero.
• ft_memcpy - copia uma área de memória.
• ft_memmove - copia uma área de memória.
• ft_strlcpy - copia uma string para um tamanho especificado.
• ft_strlcat - concatena uma string para um um tamanho especificado.
• ft_strchr - localiza a primeira ocorrência de um caractere em uma string.
• ft_strrchr - localiza a última ocorrência de um caractere em uma string.
• ft_strncmp - compara duas strings.
• ft_memchr - checa um bloco de memória em busca de um caractere.
• ft_memcmp - compara blocos de memória.
• ft_strnstr - localiza uma substring dentro de uma string.
• ft_strdup - cria uma duplicata da string passada como parâmetro.
• ft_atoi - converte uma string para um inteiro.
• ft_calloc - alloca memória e seta o valor de todos os bytes para 0.
• ft_substr - retorna uma substring de uma string.
• ft_strjoin - retorna uma string que é a junção das duas strings passadas como parâmetro.
• ft_strtrim - Corta o início e fim de uma string quando achada a sequência de caracteres passada.
• ft_split - separa uma string em várias substrings delimitadas por um caractere.
• ft_itoa - converte um número em string.
• ft_strmapi - aplica uma função a cada caractere de uma string.
• ft_striteri - aplica uma função a cada caractere de uma string.
• ft_putchar_fd - da como output um caratere para um file descriptor.
• ft_putstr_fd - da como output uma string para um file descriptor.
• ft_putendl_fd - da como output uma string para um file descriptor, seguido por uma nova linha.
• ft_putnbr_fd - da como output um número para um file descriptor.
ℹ️ Uma ferramenta de automacão para rodar e compilar seus programas com maior eficiência.
Um Makefile define uma série de tarefas para serem executadas em shell script. Essas tarefas são escritas em um target nesse formato:
target: pré-requisitos
<TAB> receita
Para testar o código vamos usar um Tester para a Libft feito pelo @jgambard. Há vários outros bons testers mas hoje vou cobrir apenas esse.
git clone https://github.com/Tripouille/libftTester libftTester
Entre na pasta do Tester e rode o teste mandatório e então o bônus:
cd libftTester
make m
make b
Se você fez tudo corretamente, deve ver algo como isso:
A 42 é uma iniciativa educacional global que propõe uma nova forma de aprender tecnologia: sem professores, sem salas de aula, estudantes aprendendo com seus colegas estudantes (Aprendizado peer to peer), com uma metodologia que desenvolve habilidades de computação e da vida. Sem mencionar que é completamente gratuita e aberta para todos, sem pré-requisitos.
As admissões na 42 são diferentes de outras escolas. Usamos um processo de admissão baseado em mérito. O passo final no processo é a Piscina - parte parte do processo seletivo que requer 4 semanas de código intenso e imersivo. Não é necessário experiência anterior em programação.
Você pode conferir mais sobre o processo de admissão no site da 42sp: https://www.42sp.org.br