Material da disciplina Algoritmos e Programação 2 (APR2)
Este guia tem como objetivo ajudar você a configurar seu computador para compilar e executar os códigos da disciplina de APR2. Siga os passos abaixo de acordo com o seu sistema operacional.
O compilador é essencial para transformar seu código-fonte em um programa executável.
A forma mais recomendada é através do MSYS2.
Veja o tutorial completo de instalação aqui neste link.
- Baixe e instale o MSYS2.
- Abra o terminal do MSYS2 e execute o comando:
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain - Adicione o caminho da pasta
bin(geralmenteC:\msys64\ucrt64\bin) às Variáveis de Ambiente (PATH) do Windows para que o comandogccfuncione em qualquer terminal.
A maioria das distribuições já possui ou facilita muito a instalação:
- Ubuntu/Debian:
sudo apt update && sudo apt install build-essential - Fedora:
sudo dnf groupinstall "Development Tools"
Instale as ferramentas de linha de comando do Xcode:
- Abra o Terminal e digite:
xcode-select --install
Utilizaremos o Visual Studio Code pela sua versatilidade. Acesse o site para efetuar o download. Após instalá-lo, abra-o e procure na aba de Extensions (Ctrl+Shift+X) por:
C/C++ Extension Pack (Microsoft): Oferece realce de sintaxe, IntelliSense (autocompletar) e suporte a depuração.
Embora existam botões que facilitam o trabalho, é fundamental saber compilar seus programas via linha de comando.
Navegue até a pasta do seu arquivo pelo terminal e utilize:
Para programas em C:
# Compila o código
gcc programa.c -o programa
# Executa o programa
./programa- Breve histórico de C
- Tipos de dados
- Variáveis e constantes
- Modificadores de tipo
- Conversão de tipos (casting)
- Operadores aritméticos
- Operadores relacionais
- Operadores lógicos
- Entrada e saída de dados
ifif-elseif-else-ifswitch-case- Operador ternário
whiledo-whileforbreakecontinue
- Variável composta homogênea
- Vetores
- Matrizes
- Declaração, inicialização, acesso e percurso
- Strings em C
- Declaração e inicialização
- Leitura e escrita
- Manipulação de strings
- Structs
- Criação de variáveis do tipo struct
- Comando typedef
- Array dentro da struct
- Array de struct
- Structs aninhadas
- Modularização
- Estrutura geral de uma função
- Protótipo de função
- Retorno de função
- Passagem de parâmetros (por valor)
- Arrays como parâmetros
- Structs em funções
- Conceito
- Declaração e inicialização
- Operadores & e *
- Desreferência
- Passagem de parâmetros por referência
- Ponteiro para structs
9. Alocação Dinâmica de Memória
- Alocação estática vs dinâmica
- Função malloc()
- Função calloc()
- Função realloc()
- Função free()
- Array dinâmico
- Função que retorna ponteiro
- Tipos de arquivos: texto e binário
- Ponteiro FILE*
- Escrita em arquivo texto usando fprintf
- Leitura em arquivo texto usando fscanf
- Leitura em arquivo texto usando fgets
- Escrita em arquivo binário usando fwrite
- Leitura em arquivo binário usando fread
- Tratamento de erros
- Conceito
- Caso base e caso recursivo
- Exemplos
12. Complexidade de Algoritmos
- Importância da análise de algoritmos
- Complexidade no tempo
- Complexidade no espaço
- Como calcular a complexidade
- Complexidade assintótica
- Notação Big-O
- Principais classes de complexidade
- Bubble Sort
- Selection Sort
- Insertion Sort
- Merge Sort
- Quick Sort
- Comparação entre os algoritmos
- Busca sequencial
- Busca binária
- Comparação entre os algoritmos