Algorithms & Data Structure
There are more materials on the video's description also on YouTube.
1. Fundamentos de Algoritmos Sequenciais
Algoritmos Sequenciais e Pseudo Linguagem (Portugol)
Fundamentos: Conceitos, Representação, Fluxogramas, Pseudo Linguagem
Tipos de Dados: tipos de dados que podem ser considerados para escrevermos algoritmos
Estrutura: Tipos de Dados, Variáveis, Comandos de Entrada e Saída e Comandos de Atribuição
Portugol (Ex): Variáveis, Tipos de Dados, Comandos de Entrada e Saída e Comandos de Atribuição
2. Linguagem C: Estrutura do Código-Fonte e Entrada e Saída
Entrada e Saída em C e o HELLO WORLD
Hello World: Como escrever seu primeiro algoritmo em Linguagem C.
scanf e printf: Como usar as funções de leitura do teclado e impressão na tela.
3. Linguagem C: Tipos de Dados e Operações Lógicas e Aritméticas
Tipos de Dados e Operações
Tipos de Dados: Tipos de Dados em Linguagem C (int, char, float, double, void)
Operações: Operações lógicas e aritméticas com dados inteiros (int) e de ponto flutuante (double e float) em C
4. Condicionais: Estruturas de Seleção (Portugol + Linguagem C)
Estruturas de Seleção: SE-SENÃO (IF-ELSE), ESCOLHA-CASO (SWITCH-CASE)
Vídeos:
PORTUGOL
Fundamentos: Tipos de Condicionais em Algoritmos. Protótipo e quando usar cada tipo de seleção: simples, composta, encadeada e múltipla-escolha.
SE (Portugol): Usar o comando SE em Portugol e entender a execução das linhas.
Operadores Relacionais: Operadores Lógicos e Relacionais com Tabelas Verdade das funções lógicas.
Escolha-Caso: Usar a estrutura condicional ESCOLHA-CASO para construir um MENU de lanchonete em Portugol
LINGUAGEM C
IF-ELSE: Uso do comando IF com o ELSE em Linguagem C.
IF - ELSE IF - ELSE: Seleção composta e encadeada IF-ELSE em Linguagem C.
Calculadora (IF-ELSE): Construindo uma calculadora com IF-ELSE em Linguagem C.
Switch-Case: Uma calculadora com a estrutura de múltipla-escolha SWITCH-CASE em Linguagem C.
Expressões Lógicas: Teste com operadores lógicos e relacionais na formação de expressões para condicionais em Linguagem C.
5. Repetição: Laços / Loops (Portugol + Linguagem C)
Repetição: PARA (FOR), WHILE (ENQUANTO), DO-WHILE, (FAÇA-ENQUANTO)
Vídeos:
PORTUGOL
Fundamentos: O básico para entender o que são as repetições (laços ou loops) em algoritmos sequenciais.
PARA: o comando para repetição contada em Portugol.
ENQUANTO: o comando para repetição com teste no início em Portugol
FAÇA-ENQUANTO: o comando para repetição com teste no fim em Portugol.
Laço + Seleção: criando um menu combinando uma repetição com uma seleção em Portugol (FAÇA-ENQUANTO com ESCOLHA-CASO)
LINGUAGEM C
FOR: o comando para repetição contada em Linguagem C.
FOR FOR: repetição contada encadeada em Linguagem C.
WHILE: repetição com teste no início em Linguagem C.
DO-WHILE: repetição com teste no fim em Linguagem C.
FOR + IF: criar um programa com várias condições (usando IF) dentro de um laço FOR
WHILE + SWITCH CASE: criar uma calculadora com MENU que fica na tela tipo um loop infinito
DO WHILE + IF: criar um programa com várias condições (usando IF) dentro de um laço DO WHILE
6. Vetores
Vetores
Vídeos:
PORTUGOL
Fundamentos: Entender o que são vetores e como eles são vistos na memória.
Percorrer o Vetor: Utilizar estruturas de repetição para acessar todos os elementos do vetor.
Somar os vetores: Realizar operações aritméticas entre dois vetores
LINGUAGEM C
Percorrer em Ling C: Utilizar estruturas de repetição para acessar todos os elementos do vetor em Linguagem C.
7. Matrizes
Matrizes
Vídeos:
PORTUGOL
Fundamentos: O que são Matrizes e como elas são armazenadas e acessadas na memória?
Percorrer em Portugol: Utilizando laços PARA do Portugol, aninhados, para preenher e ler elementos das Matrizes.
LINGUAGEM C
Percorrer em Linguagem C: Utilizando laços FOR em Linguagem C, aninhados, para preencher e ler elementos das Matrizes.
Operações em Linguagem C: Para duas matrizes, vamos calcular as matrizes soma e multiplicação resultantes, além da matriz transposta da matriz 1.
8. STRINGs (Cadeias de Caracteres)
STRINGS
LINGUAGEM C
Fundamentos: Vamos aprender o que são STRINGs, ou cadeias de caracteres, em Linguagem C. Aqui vemos o conceito, para que servem, como funcionam e como declarar. Além disso, entendemos um pouco da sua relação com vetores. .
Ler do Teclado: Vamos aprender a ler STRINGs do teclado em Linguagem C. Primeiro testamos com a função scanf(). Depois, com a função fgets(). E vemos também a importância de limpar o buffer de entrada para ler mais de uma STRING no mesmo código e evitar sobreposição dos dados. Por fim, vemos como calcular o tamanho de uma STRING com a função strlen().
Copiar e Concatenar: Vamos copiar o conteúdo de uma STRING para outra com a função strcpy() e strncpy(). Vamos também concatenar o conteúdo de duas STRINGs com strcat().
Comparar: Vamos comparar o conteúdo de duas STRINGs usando as funções strncmp().
9. Ponteiros em C
Ponteiros
LINGUAGEM C
Fundamentos: Vamos aprender o conceito de Ponteiros e como estas variáveis se comportam na memória.
Tipos de Dados: Vamos estudar os tipos de ponteiros e como atribuir cada tipo de ponteiro a cada tipo de variável. Também vamos ver por que não podemos atribuir ponteiros a tipos diferentes de dados,.
Atribuição (1): Vamos ver como fazer para copiar um ponteiro para o outro (são dois vídeos e este é o primeiro). Assim, ambos apontarão para a mesma variável.
Atribuição (2): Vamos ver como fazer para copiar um ponteiro para o outro (são dois vídeos e este é o segundo). Assim, ambos apontarão para a mesma variável.
Aritmética (1): Aqui vamos estudar (detalhando a parte teórica) sobre as operações aritméticas soma e subtração que são permitidas entre ponteiros. Vamos ver aqui também como ocorre o incremento de ponteiros (de acordo com o tipo de dado que ele aponta).
Aritmética (2): Aqui vamos executar um código para mostrar o incremento do ponteiro de acordo com o tipo que ele aponta. Vamos fazer isso tanto fazendo p++ e também vamos observar o resultado de somar uma constante ao ponteiro tipo p = p + 5. Para isso, vamos ver também como imprimir o tipo endereço usado no printf usando o %p.
Aritmética (3): Aqui vamos executar o código e mostrar como somar e subtrair os ponteiros entre si. Vamos analisar expressões como "p3 = p1 + p2" e "p4 = p2 - p1" e ver o que isso significa.
Aritmética (4): Aqui vamos modificar os conteúdos das variáveis apontadas através dos ponteiros. Vamos combinar isso com aritmética de ponteiros e analisar expressões do tipo: *p3 = *p2 + *p1;.
Vetores: Percorrer um vetor através da aritmética de ponteiros, ou seja, vamos percorrer o vetor a partir do endereço inicial dele e seguimos incrementando o ponteiro para percorrer o vetor sem precisar indexar. Vamos começar com p = &a[0] para fazer o ponteiro apontar para o vetor e seguir percorrendo apenas por p++;
Strings: Vamos percorrer uma cadeia de caracteres, ou seja, percorrer uma string, sem precisar indexar (acessar pelo índice). Vamos percorrer a string através de um ponteiro e e contar quantos caracteres há naquela string. Aqui utilizamos a técnica de percorrer um vetor por aritmética de ponteiros.
Matriz (1): Vamos ver aqui uma matriz de ponteiros, ou seja, como usar uma matriz em que os elementos são ponteiros e não variáveis comuns.
Matriz (2): Como percorrer uma matriz de ponteiros e acessar diferentes variáveis em diferentes posições de memória. Aqui vamos pegar um código, declarar uma matriz de ponteiros inteiros e fazer essa matriz apontar para diversas variáveis na memória. Além disso, vamos passar a matriz de ponteiros como parâmetro em uma função.
Matriz (3): O vídeo mostra com utilizar uma matriz de ponteiros para apontar para várias cadeias de caracteres diferentes (strings), sendo que cada cadeia é uma mensagem de erro que pode ser escolhida pelo sistema operacional.
Ponteiro de Ponteiro: Indireção de Múltipla ou Ponteiros de Ponteiros. Vamos analisar na memória e com um código como utilizar variáveis que são ponteiros de ponteiros.
12. STRUCTS (Registros)
STRUCTs
LINGUAGEM C
Fundamentos: Vamos aprender o que são STRUCTs (REGISTROS), em Linguagem C. Aqui vemos o conceito, para que servem, como funcionam e como declarar.
Acessar campos: Vamos declarar STRUCTs criando um novo tipo de dado para cadastrar um aluno e acessar os campos desta STRUCT.
Ler STRINGs: Vamos aprender a ler STRINGs dentro das STRUCTS. Isso é útil se queremos armazenas nomes, endereços e quaisquer outras cadeias de caracteres.
Atribuição: Como copiar conteúdo de campos de uma STRUCT para outra, bem como copiar STRUCTs inteiras para outras.
Typedef: Utilizar o comando TYPEDEF para definir novos nomes para os tipos de dados nativos ou definidos pelo usuário.
Ponteiros: Vamos aprender a usar ponteiros para fazer STRUCTs apontarem para outras STRUCTs. Além disso, vamos acessar campos específicos de STRUCTs com ponteiros só para algum elemento.
Vetores e Matrizes: Vamos aprender a criar e percorrer vetores (matrizes) de STRUCTs.
Lista Postal: Vamos construir uma lista postal para cadastrar pessoas e endereços com STRUCTs em linguagem C. Nossa base da implementação será um vetor de STRUCTs e vamos criar funções para inserir um cadastro, excluir um cadastro e imprimir os cadastros na tela.
15. Arquivos em C
16. Alocação Dinâmica
Alocação Dinâmica de Memória
Vídeos:
Visão da Memória: Aprender a noção de Espaço de Endereçamento para entender como o seu "código rodando" é visto na memória principal. Para isso, veremos as divisões da memória: Pilha + Heap + espaço para varáveis globais e de inicialização + região de código (instruções)
MALLOC e FREE: Usar as funções da biblioteca padrão para solicitar memória em tempo de execução e liberar esta memória em seguida.
17. Recursividade
Recursividade
Vídeos:
Fundamentos: Entender o conceito de função e recursivas, o caso básico e a evolução das chamadas. Para que usar e como usar. Além disso, vemos qual o impacto disso na memória onde ficam armazenadas as variáveis locais geradas e os endereços de retorno necessários.
Fatorial Recursivo: Implementação de um algoritmo fatorial recursivo. Mostra as chamadas empilhadas até o caso básico, bem como o retorno progressivo.
18. Mecanismos de Dados: Introdução a FILA, LISTA, PILHA e ÁRVORE
19. FILA
FILA
Vídeos:
Fila Linear: O conceito de FILA e sua estrutura na Memória.
Fila Linear em Ling C: Implementação de uma FILA de caracteres em uma MATRIZ acessada por indexação de matrizes.
Fila Circular: O conceito de FILA CIRCULAR e sua estrutura na Memória.
Fila Circular em Ling C: Implementação de uma FILA CIRCULAR de caracteres em uma MATRIZ acessada por indexação de matrizes.
Agenda em Ling C: Implementação de uma FILA para uma AGENDA DE COMPROMISSOS tendo como base uma MATRIZ indexada que armazena ponteiros para STRINGs em posições diversas da memória..
20. PILHA
PILHA
Vídeos:
Fundamentos: O conceito de PILHA e sua estrutura na Memória.
PILHA em Ling C: Implementação de uma PILHA de caracteres em uma MATRIZ acessada por indexação de matrizes.