Você está na página 1de 28

Cronograma de estudos

1ª Fase

Lógica de Programação, Algoritmo e Pseudocódigo.


Semana 1-2

Introdução à Lógica de Programação


1. O que é Lógica de Programação:
 Definição e importância da lógica de programação.
 Relação entre lógica de programação e desenvolvimento de software.

2. Algoritmos e Sequências:
 O que é um algoritmo e sua função.
 Sequências de passos lógicos para resolver um problema.
 Exemplos de algoritmos simples.

3. Estruturas de Controle:
 Estrutura sequencial e sua aplicação.
 Estrutura condicional (if-else) para tomar decisões.
 Estrutura de repetição (loops) para repetir ações.

4. Pseudocódigo:
 Introdução ao pseudocódigo como uma forma de representar
algoritmos.
 Sintaxe básica do pseudocódigo.
 Conversão de problemas em linguagem natural para pseudocódigo.

5. Variáveis e Tipos de Dados:


 Conceito de variáveis como espaços de armazenamento.
 Tipos de dados básicos: inteiros, ponto flutuante, strings, booleanos.
 Declaração de variáveis e atribuição de valores.

6. Expressões e Operadores:
 Uso de operadores aritméticos (+, -, *, /) em expressões.
 Operadores de comparação (>, <, ==, !=) para avaliar condições.
 Operadores lógicos (AND, OR, NOT) para combinar condições.

7. Estrutura Condicional:
 Compreensão da estrutura if-else para tomar decisões.
 Blocos de código condicional.
 Exemplos práticos de aplicação de estruturas condicionais.

8. Estruturas de Repetição (Loops):


 Introdução a loops (while, for, do-while).
 Utilização de loops para executar ações repetitivas.
 Cuidados para evitar loops infinitos.

9. Modularização e Funções:
 Conceito de modularização para dividir problemas em partes menores.
 Introdução às funções como blocos de código reutilizável.
 Declaração, chamada e retorno de funções.
Algoritmo
1. Conceito de Algoritmo:
 Definição de algoritmo e sua importância na resolução de problemas.
 Compreensão da sequência ordenada de passos lógicos.

2. Características de um Algoritmo:
 Características de clareza, precisão e finitude.
 Noções de entrada, processamento e saída.

3. Desenvolvimento de Algoritmos:
 Identificação e definição clara do problema a ser resolvido.
 Decomposição do problema em partes menores e mais simples.
 Organização das partes em uma sequência lógica de ações.

4. Representação de Algoritmos:
 Uso de pseudocódigo como forma intermediária de representação.
 Uso de fluxogramas para visualizar a sequência de passos.

5. Passos de um Algoritmo:
 Passo de entrada: coleta de dados ou informações iniciais.
 Passo de processamento: manipulação dos dados de acordo com a
lógica.
 Passo de saída: apresentação dos resultados ou solução.

6. Exemplos de Algoritmos Simples:


 Algoritmo para calcular a média de notas.
 Algoritmo para verificar se um número é par ou ímpar.
 Algoritmo para encontrar o maior valor entre dois números.
7. Eficiência e Complexidade de Algoritmos:
 Introdução ao conceito de eficiência de algoritmos.
 Avaliação da complexidade de tempo e espaço.
 Noções de algoritmos de tempo constante, linear e quadrático.

8. Refinamento e Melhoria de Algoritmos:


 Identificação de pontos de melhoria em algoritmos.
 Uso de estruturas de controle para otimização.
 Exploração de técnicas para redução de complexidade.

9. Aplicação em Problemas Reais:


 Aplicação de algoritmos na resolução de problemas cotidianos.
 Adaptação de algoritmos para situações específicas.
Pseudocódigo
1. Introdução ao Pseudocódigo:

 Definição e importância do pseudocódigo como uma representação


intermediária entre linguagem natural e linguagem de programação.
 Vantagens de usar pseudocódigo na elaboração de algoritmos.

2. Sintaxe Básica do Pseudocódigo:

 Convenções para a escrita de pseudocódigo, como


maiúsculas/minúsculas.
 Uso de palavras-chave como INÍCIO, FIM, SE, SENÃO, ENQUANTO, etc.

3. Variáveis e Atribuição:

 Declaração de variáveis e convenções de nomenclatura.


 Atribuição de valores a variáveis.
 Uso de variáveis para armazenar informações.

4. Estruturas de Controle em Pseudocódigo:

 Uso da estrutura condicional "SE" (IF) e "SENÃO" (ELSE).


 Uso da estrutura de repetição "ENQUANTO" (WHILE) e "FAÇA ATÉ" (DO-
WHILE).

5. Operações e Expressões:

 Uso de operadores aritméticos (+, -, *, /) em expressões.


 Utilização de operadores de comparação (>, <, ==, !=) para avaliar
condições.
 Combinação de operadores lógicos (E, OU, NÃO) para formar expressões
lógicas.

6. Estruturas de Dados Simples:


 Manipulação de dados usando estruturas como arrays ou listas em
pseudocódigo.

7. Funções e Modularização:

 Criação e definição de funções.


 Chamada de funções com argumentos e retorno de valores.

8. Exemplos de Algoritmos em Pseudocódigo:

 Algoritmo para calcular a média de notas.


 Algoritmo para determinar se um número é par ou ímpar.
 Algoritmo para procurar o maior valor em uma lista.

9. Conversão para Linguagem de Programação:

 Como transformar pseudocódigo em código executável em uma


linguagem de programação real.

10. Prática e Aplicação:

 Resolução de problemas usando pseudocódigo.


 Criação de algoritmos mais complexos para resolver desafios.

2ª Fase
Variáveis, Tipos de Dados, Operadores Lógicos, Estruturas
de Controle e Funções.
Semana 3-4

Variáveis
1. Conceito de Variáveis:
 Definição e importância de variáveis na programação.
 Compreensão de variáveis como espaços de armazenamento de dados.

2. Tipos de Dados:
 Noções de tipos de dados básicos: inteiros, ponto flutuante, strings,
booleanos.
 Compreensão das características e limitações de cada tipo de dado.

3. Declaração e Inicialização:
 Processo de declarar uma variável com um nome e um tipo.
 Importância da inicialização para evitar valores indesejados.

4. Convenções de Nomenclatura:
 Regras e boas práticas para nomear variáveis.
 Uso de nomes descritivos para facilitar a compreensão do código.

5. Escopo de Variáveis:
 Compreensão dos diferentes níveis de escopo: global e local.
 Acesso e visibilidade de variáveis em diferentes partes do código.

6. Atribuição de Valores:
 Uso do operador de atribuição (=) para associar valores a variáveis.
 Atualização de valores de variáveis durante a execução do programa.

7. Conversão de Tipos (Casting):


 Conversão explícita entre diferentes tipos de dados.
 A importância de entender as implicações das conversões.

8. Variáveis e Expressões:
 Uso de variáveis em expressões aritméticas e lógicas.
 Criação de expressões complexas utilizando variáveis.

9. Variáveis em Diferentes Linguagens:


 Observação das nuances no uso de variáveis em diferentes linguagens de
programação.
 Compreensão das diferenças entre linguagens tipadas e não tipadas.

10. Boas Práticas e Gerenciamento de Variáveis:


 Uso de nomes significativos para melhor legibilidade.
 Evitar a criação de variáveis desnecessárias.
 Práticas para evitar bugs relacionados a variáveis.

Tipos de Dados
1. Introdução aos Tipos de Dados:
 Definição de tipos de dados e sua importância na programação.
 Papel dos tipos de dados na representação e manipulação de
informações.

2. Tipos Numéricos:
 Inteiros: representação de números inteiros (ex.: int, long, short).
 Ponto Flutuante: representação de números decimais (ex.: float, double).
 Uso adequado de tipos numéricos de acordo com a faixa de valores e
precisão necessárias.

3. Tipos de Texto:
 Strings: representação de sequências de caracteres.
 Manipulação de strings: concatenação, extração de substrings, etc.
 Diferenças entre strings em diferentes linguagens de programação.

4. Tipos Booleanos:
 Booleanos: representação de valores lógicos (verdadeiro/falso).
 Uso de operadores lógicos com tipos booleanos.

5. Tipos Compostos:
 Arrays (Listas): agrupamento de elementos do mesmo tipo.
 Estruturas: combinação de diferentes tipos de dados em uma única
estrutura.
 Uso de tipos compostos para organizar e armazenar dados de maneira
eficiente.

6. Tipos de Dados Personalizados:


 Enums (Enumerations): criação de tipos personalizados com valores
limitados.
 Tipos definidos pelo usuário: criação de tipos personalizados a partir de
tipos existentes.

7. Conversão entre Tipos de Dados:


 Conversão implícita e explícita entre tipos de dados.
 Possíveis implicações e riscos da conversão de tipos.

8. Gerenciamento de Memória e Tipos de Dados:


 Uso de tipos de dados para alocar e gerenciar memória.
 Importância de liberar memória alocada adequadamente.

9. Uso de Tipos de Dados em Aplicações Reais:


 Exemplos de aplicação de diferentes tipos de dados em problemas do
mundo real.
 Escolha apropriada de tipos de dados para otimizar o desempenho e a
funcionalidade.

10. Diferenças entre Linguagens de Programação:


 Observação das variações nos tipos de dados oferecidos por diferentes
linguagens.
 Considerações ao escolher uma linguagem com base nos tipos de dados
necessários.

Operadores Lógicos
1. Introdução aos Operadores Lógicos:

 Definição de operadores lógicos e sua importância na avaliação de


condições.
 Uso de operadores lógicos para combinar expressões e tomar decisões.

2. Operador NOT (Negação):

 Função do operador NOT na inversão do valor lógico de uma expressão.


 Utilização do operador NOT para criar condições negativas.

3. Operador AND (E):

 Significado do operador AND na avaliação de duas condições


simultaneamente.
 Utilização do operador AND para criar condições mais complexas.

4. Operador OR (OU):

 Função do operador OR na avaliação de pelo menos uma das condições


como verdadeira.
 Utilização do operador OR para criar condições alternativas.

5. Combinando Operadores Lógicos:

 Criação de expressões complexas com a combinação de operadores


lógicos.
 Uso de parênteses para controlar a ordem de avaliação.

6. Precedência e Associatividade:

 Hierarquia dos operadores lógicos em relação a outros operadores.


 Conhecimento da ordem de avaliação para evitar resultados
inesperados.

7. Curto-Circuito (Short-Circuit):

 Compreensão do curto-circuito como otimização na avaliação de


expressões.
 Utilização do curto-circuito para evitar avaliações desnecessárias.

8. Uso de Operadores Lógicos em Estruturas Condicionais:

 Aplicação dos operadores lógicos para construir condições complexas em


estruturas if-else.
 Uso de operadores lógicos para expressar múltiplas condições
simultaneamente.

9. Expressões Lógicas em Pseudocódigo:

 Utilização de operadores lógicos em pseudocódigo para criar condições.


 Prática na criação de algoritmos que envolvam expressões lógicas.

10. Exemplos Práticos:

 Exemplos de aplicação dos operadores lógicos em problemas reais.


 Resolução de desafios que envolvam avaliação de condições complexas.

Estruturas de Controle
1. Introdução às Estruturas de Controle:

 Definição e importância das estruturas de controle na programação.


 Papel das estruturas de controle na tomada de decisões e repetição de
ações.

2. Estrutura Sequencial:

 Execução linear de instruções em sequência.


 Compreensão da execução passo a passo das ações.

3. Estrutura Condicional (IF-ELSE):

 Uso da estrutura condicional "SE" (IF) para tomar decisões.


 Utilização da estrutura "SE-SENÃO" (IF-ELSE) para lidar com casos
alternativos.

4. Estruturas de Repetição (Loops):

 Introdução à estrutura de repetição "ENQUANTO" (WHILE).


 Utilização do loop "FAÇA ATÉ" (DO-WHILE) para garantir a execução pelo
menos uma vez.
 Uso do loop "PARA" (FOR) para repetir um bloco de código um número
específico de vezes.

5. Interrupção e Continuação de Loops:

 Uso de declarações "BREAK" e "CONTINUE" para interromper e continuar


loops.
 Aplicação dessas declarações para otimizar o fluxo de execução.

6. Estruturas de Controle Aninhadas:


 Combinação de múltiplas estruturas de controle em blocos aninhados.
 Criação de lógica complexa usando estruturas aninhadas.

7. Estruturas de Controle em Pseudocódigo:

 Aplicação das estruturas de controle em pseudocódigo para criar


algoritmos.
 Exemplos práticos de uso de estruturas condicionais e de repetição.

8. Fluxogramas para Representar Estruturas de Controle:

 Uso de fluxogramas para visualizar a sequência de execução das


estruturas.
 Símbolos e convenções utilizados em fluxogramas.

9. Escolha Adequada de Estruturas de Controle:

 Decisão sobre qual estrutura de controle usar com base nos requisitos do
problema.
 Considerações de eficiência e legibilidade na escolha das estruturas.

10. Exemplos Práticos e Desafios:

 Resolução de problemas reais usando diferentes estruturas de controle.


 Exploração de desafios que requerem lógica condicional e loops.

Funções
1. Introdução a Funções:

 Definição e importância das funções na programação.


 Papel das funções na modularização e reutilização de código.

2. Declaração e Chamada de Funções:

 Processo de declaração de uma função com nome, parâmetros e corpo.


 Uso da chamada de função para executar o código contido nela.

3. Parâmetros e Argumentos:

 Compreensão dos parâmetros como entradas da função.


 Passagem de argumentos ao chamar uma função.

4. Retorno de Valores:

 Utilização da instrução "return" para retornar valores de uma função.


 A importância do valor de retorno e sua aplicação.

5. Escopo de Funções:

 Diferença entre variáveis locais e globais.


 Compreensão do escopo de uma função.

6. Funções com e sem Retorno:

 Criação de funções que retornam valores.


 Criação de funções que não retornam valores (void).

7. Funções Recursivas:
 Entendimento das funções que se chamam a si mesmas.
 Aplicação de funções recursivas na resolução de problemas.

8. Funções de Biblioteca:

 Uso de funções já existentes em bibliotecas padrão.


 Exploração das funções disponíveis em uma linguagem de programação.

9. Modularização e Reutilização de Código:

 Importância da criação de funções para dividir um problema em partes


menores.
 Benefícios da reutilização de funções em diferentes partes do código.

10. Testes e Depuração de Funções:

 Criação de testes para garantir o funcionamento correto das funções.


 Identificação e resolução de erros em funções.
3ª Fase

Estruturas de Dados - Arrays, Listas, Pilhas, Filas


Semana 7-8

Estruturas de Dados
1. Introdução às Estruturas de Dados:

 Definição e importância das estruturas de dados na organização de


informações.
 Papel das estruturas de dados na eficiência e otimização de algoritmos.

2. Arrays (Vetores):

 Conceito de arrays como coleções de elementos do mesmo tipo.


 Uso de índices para acessar elementos individuais.
 Operações básicas em arrays: inserção, remoção, busca.

3. Listas Ligadas:

 Estruturas de dados que consistem em nós conectados.


 Listas ligadas simples e duplamente ligadas.
 Inserção, remoção e busca em listas ligadas.

4. Pilhas:

 Características de uma estrutura de dados do tipo LIFO (Last-In-First-


Out).
 Operações em pilhas: empilhar (push) e desempilhar (pop).
 Aplicações de pilhas em reversão de strings, verificação de parênteses,
etc.
5. Filas:

 Características de uma estrutura de dados do tipo FIFO (First-In-First-


Out).
 Operações em filas: enfileirar (enqueue) e desenfileirar (dequeue).
 Aplicações de filas em simulações, escalonamento, etc.

6. Árvores:

 Conceito de árvores como estruturas hierárquicas.


 Árvores binárias, árvores balanceadas (AVL, RB), árvores de busca (BST).
 Operações em árvores: inserção, remoção, busca.

7. Grafos:

 Estruturas de dados que representam conexões entre elementos.


 Conceito de nós (vértices) e arestas.
 Tipos de grafos: direcionados, não direcionados, ponderados.

8. Tabelas Hash:

 Utilização de tabelas hash para armazenar dados em pares chave-valor.


 Funções de hash e resolução de colisões.
 Aplicações em indexação, dicionários, cache, etc.

9. Estruturas de Dados Complexas:

 Combinação de diferentes estruturas de dados para resolver problemas


complexos.
 Uso de estruturas compostas, como listas de listas.
10. Escolha Adequada de Estruturas de Dados:

 Considerações na escolha da estrutura de dados com base na eficiência e


necessidades do problema.
 Adaptação das estruturas para melhor se ajustarem aos requisitos.
Arrays
1. Introdução a Arrays:

 Definição e importância de arrays como estruturas de dados.


 Compreensão de arrays como coleções ordenadas de elementos.

2. Declaração e Inicialização de Arrays:

 Processo de declaração de arrays e especificação do tipo de dado.


 Inicialização de arrays com valores ou alocação dinâmica.

3. Acesso e Manipulação de Elementos:

 Uso de índices para acessar elementos individuais de um array.


 Modificação de elementos por meio de atribuição.

4. Tamanho e Capacidade:

 Tamanho fixo vs. tamanho dinâmico de arrays.


 Uso de funções para obter o tamanho de um array.

5. Percorrendo Arrays:

 Utilização de loops para percorrer todos os elementos de um array.


 Uso de índices para acesso e manipulação.

6. Operações Básicas em Arrays:

 Inserção de elementos em posições específicas.


 Remoção de elementos de posições específicas.
 Busca de elementos dentro de um array.
7. Arrays Multidimensionais:

 Conceito de arrays com múltiplas dimensões.


 Matrizes bidimensionais (tabelas) e acesso a elementos.

8. Ordenação de Arrays:

 Uso de algoritmos de ordenação (ex.: bubble sort, quicksort) para


ordenar elementos em um array.
 Aplicações da ordenação em algoritmos de busca eficientes.

9. Busca em Arrays:

 Utilização de algoritmos de busca (ex.: busca linear, busca binária) para


encontrar elementos em um array.
 Aplicações de busca em situações onde os elementos não estão
necessariamente em ordem.

10. Uso de Arrays em Linguagens Específicas:

 Observação das diferenças no uso de arrays em diferentes linguagens de


programação.
 Exploração de funcionalidades específicas de arrays em linguagens
populares.
Listas
1. Introdução a Listas:

 Definição e importância de listas como estruturas de dados dinâmicas.


 Compreensão das listas como coleções de elementos conectados.

2. Listas Ligadas Simples:

 Conceito de listas ligadas simples e seus nós.


 Inserção, remoção e busca de elementos em listas ligadas simples.

3. Listas Ligadas Duplamente Ligadas:

 Listas ligadas que possuem referências para o próximo e o anterior.


 Vantagens e desvantagens das listas duplamente ligadas.

4. Operações em Listas:

 Inserção: adicionar elementos no início, final ou em posições específicas.


 Remoção: excluir elementos da lista.
 Busca: localizar elementos por valor ou posição.

5. Manipulação de Ponteiros:

 Entendimento do uso de ponteiros para conectar os nós da lista.


 Prevenção de vazamentos de memória e lixo eletrônico.

6. Listas Circulares:

 Listas ligadas em que o último nó se conecta ao primeiro.


 Utilização de listas circulares em situações específicas.
7. Listas com Cabeça e Sem Cabeça:

 Diferença entre listas que possuem um nó cabeça e as que não possuem.


 Vantagens da utilização de nós cabeça.

8. Implementação de Listas:

 Criação de estruturas de dados para representar listas em código.


 Manipulação das estruturas para realizar operações de lista.

9. Aplicações de Listas:

 Uso de listas para implementar estruturas de dados como pilhas e filas.


 Aplicações em algoritmos que envolvem sequenciamento de dados.

10. Análise de Complexidade:

 Avaliação do desempenho de operações de inserção, remoção e busca


em listas.
 Comparação da eficiência de listas com outras estruturas de dados.
Pilhas
1. Introdução a Pilhas:

 Definição e importância de pilhas como estruturas de dados LIFO (Last-


In-First-Out).
 Compreensão do conceito de empilhar e desempilhar elementos.

2. Operações em Pilhas:

 Empilhar (push): adicionar elementos no topo da pilha.


 Desempilhar (pop): remover o elemento do topo da pilha.
 Verificação do elemento no topo sem removê-lo (peek/top).

3. Implementação de Pilhas:

 Uso de arrays ou listas ligadas para implementar pilhas.


 Manipulação das estruturas para realizar as operações de pilha.

4. Aplicações de Pilhas:

 Uso de pilhas em inversão de strings, verificação de parênteses, cálculos


de expressões, entre outros.
 Implementação de algoritmos como o algoritmo de Dijkstra.

5. Balanceamento de Parênteses:

 Utilização de pilhas para verificar se uma expressão tem parênteses


balanceados.
 Detecção de erros na estrutura de parênteses.

6. Pilhas em Funções Recursivas:


 Uso de pilhas para acompanhar chamadas de funções recursivas.
 Entendimento do funcionamento da pilha de chamadas.

7. Análise de Complexidade:

 Avaliação do desempenho das operações de empilhar, desempilhar e


verificar o topo da pilha.
 Comparação da eficiência das operações em pilhas com outras
estruturas.

8. Pilhas e Memória:

 Impacto da utilização de pilhas na alocação de memória.


 Cuidados para evitar estouro de pilha (stack overflow).

9. Pilhas em Linguagens de Programação:

 Uso de pilhas para gerenciar a execução de programas.


 Compreensão do funcionamento interno das chamadas de função.

10. Prática com Exemplos:

 Resolução de problemas que envolvam o uso de pilhas.


 Implementação de algoritmos que dependam de pilhas.

Filas
1. Introdução a Filas:

 Definição e importância de filas como estruturas de dados FIFO (First-In-


First-Out).
 Compreensão do conceito de enfileirar e desenfileirar elementos.

2. Operações em Filas:

 Enfileirar (enqueue): adicionar elementos no final da fila.


 Desenfileirar (dequeue): remover o elemento da frente da fila.
 Verificação do elemento na frente sem removê-lo.

3. Implementação de Filas:

 Uso de arrays ou listas ligadas para implementar filas.


 Manipulação das estruturas para realizar as operações de fila.

4. Aplicações de Filas:

 Uso de filas em simulações, escalonamento de tarefas, gerenciamento de


recursos, entre outros.
 Implementação de algoritmos como o algoritmo de Breadth-First Search
(BFS).

5. Filas de Prioridade:

 Filas que organizam os elementos por ordem de prioridade.


 Implementação de filas de prioridade usando heaps.

6. Filas Circulares:

 Filas em que o último elemento se conecta ao primeiro, criando um ciclo.


 Utilização de filas circulares em situações específicas.
7. Análise de Complexidade:

 Avaliação do desempenho das operações de enfileirar, desenfileirar e


verificar a frente da fila.
 Comparação da eficiência das operações em filas com outras estruturas.

8. Filas em Linguagens de Programação:

 Uso de filas para gerenciar tarefas, eventos e comunicação entre


processos.
 Compreensão das filas de sistema e suas implicações.

9. Filas e Memória:

 Impacto da utilização de filas na alocação de memória.


 Cuidados para evitar estouro de memória (memory overflow).

10. Prática com Exemplos:

 Resolução de problemas que envolvam o uso de filas.


 Implementação de algoritmos que dependam de filas.

Referências:
1. Livro: "Estruturas de Dados e Algoritmos em Java" por Robert Lafore
(Editora Pearson).
2. Site: GeeksforGeeks - Data Structures
3. Exercícios:
4. Site: CodeSignal - Data Structures Practice
5. Referências:
6. Livro: "Lógica de Programação e Algoritmos com JavaScript" por Edécio
Fernando Iepsen (Editora Novatec).
7. Site: Khan Academy - Algoritmos
8. Exercícios:
9. Site: Exercism - Track de Lógica de Programação
10.Site: HackerRank - Algoritmos
11.Livro: "Algoritmos e Lógica de Programação" por Marcos A. Pérez
(Editora Novatec).
12.Site: Codecademy - Learn JavaScript
13.Exercícios:
14.Site: LeetCode - Explore - Learn
15.Site: URI Online Judge - Beginner Problems

Você também pode gostar