Escolar Documentos
Profissional Documentos
Cultura Documentos
● Intuição
● Aprendizagem
● Percepção
● Resposta a estímulos
● Compreensão
● Entendimento
Paradigmas de programação
Um paradigma de programação é um médio de classificar as linguagens baseado
em suas funcionalidades, estruturação e execução do programa. As linguagens de
programação se enquadram em um ou vários paradigmas devido ao tipo
de ordenes que permitem implementar.
Paradigmas de programação
A programação estruturada opera com três estruturas de controle básicas:
Sequenciais Desvio
Laço
Conceitos de base
● Sistema
● Subsistema
● Programa
● Modulo
○ Classe
○ Função
○ Bloco de código
○ Linha de código
Conceitos de base
● Sistema:
○ Promove o encapsulamento.
Conceitos de Modelagem
Um modelo é uma abstração de alguma coisa, cujo proposito é conhecer algum
aspecto antes de se construí-lo. Para construir modelos complexos o
desenvolvedor deve abstrair diferentes visões do sistema, notação precisa,
verificar se os modelos satisfazem os requisitos e acrescentar detalhes
gradativamente para transformar os modelos em uma implementação.
Conceitos de Modelagem
Alguns objetivos na construção de modelos:
Para reduzir o problema, pode ser usadas tanto ferramentas técnicas (controle de
alterações, sistema para criação de referências cruzadas, editores e depuradores)
como bem incluir metodologias para o gerenciamento de software.
O processo de desenvolvimento de Software
O método voltado para suportar o processo de desenvolvimento de software
oferece uma sistemática para as fases de análise, projeto e implementação.
Métodos sistemáticos consumem mais tempo nas fases iniciais do
desenvolvimento de software, mas apresentam as seguintes vantagens:
● Verificação de requisitos.
● Conceitos mais claros.
● Maior adequação do projeto ao problema.
● Melhor decomposição do projeto para trabalho em equipe.
● Melhor comunicação da equipe de desenvolvimento.
● Menor esforço de manutenção.
O processo de desenvolvimento de Software
O processo de desenvolvimento de Software
A fase de análises define o comportamento esperado do sistema. Os modelos
do sistema são produzidos, descrevendo os seguintes elementos:
1. Hoje é sábado
2. Todo sábado que não tem feriado tem aula
3. Hoje não é feriado:
4. Logo, hoje tem aula
Exemplo:
Um senhor está numa das margens de um rio com uma raposa, uma dúzia de
galinhas e um saco de milho. El pretende atravessar o rio com sua cargas num
barco que só comporta e uma de suas cargas.
1. Atravesse as galinhas;
2. Retorne sozinho;
3. Atravesse a raposa;
4. Retorne com as galinhas;
5. Atravesse o milho;
6. Retorne sozinho;
7. Atravesse as galinhas.
Descrição Narrativa
Inicialmente, a representação de solução de algoritmos será a Descrição
Narrativa, onde eles são expressos em linguagem natural, como se fossem
regras para utilização de um determinado aparelho, um manual.
4 0 0 0
4 0 10 0 0
4 0 10 10 1
Exemplo de Testes de programa
N I VALOR SOMA POSITIVOS MEDIA
4 0 10 10 1
4 1
4 0 10 10 1
4 1 15 25 2
4 2 -5 25 2
4 3 5 30 3 10
Tópicos
● Introdução;
● Tipos de Dados;
● Primitivos, Estáticos e Dinâmicos;
● Recursividade;
● Operações;
● Definição Listas lineares;
● Pilhas, Filas e Deques;
● Representação Física;
● Exercicios.
Introdução
Estruturas de dados são encontradas em praticamente todas as áreas da computação
○ Banco de dados
○ Sistemas operacionais
○ Computação gráfica
○ Compiladores
○ Funcionar corretamente
○ Operações: E, NÃO, OU
Tipos de Dados - Primitivos
● Caracter: “A”, “X”, “1”, “+”
Esse tipo de dado não tem tamanho predefinido, só ficando limitado à memoria do
computador em que se está trabalhando.
Desde o ponto de vista logico, um tipo dinâmico de dados não tem limitações,
porém, como os algoritmos de manipulação dessas estruturas são implementadas
em computadores nesta disciplina trataremos suas limitações físicas.
Recursividade
● Um algoritmo que resolve um problema grande em problemas menores, cujas
soluções requerem a aplicação dele mesmo, é chamado recursivo.
1 si n = 0 ó 1
n!=
n(n − 1) si n 1
Analogamente, sua expressão funcional será a seguinte:
1 si n = 0 ó 1
fac(n) =
n * fac(n − 1) si n 1
Recursividade
Exemplo:A função fatorial pode ser desenvolvida recursivamente.
Matematicamente é definido como:
1 si n = 0 ó 1 1 si n = 0 ó 1
n!= fac(n) =
n(n − 1) si n 1 n * fac(n − 1) si n 1
○ No caso de estruturas estáticas não podemos que retirar um elemento, no máximo podemos
retirar os valores que ele contem, substituindo-os por outros.
○ Em uma estrutura dinâmica podemos retirar quantos elementos desejarmos, onde cada retirada
diminuímos a sua quantidade de elementos.
Uma lista linear é uma estrutura dinâmica caraterizada por uma sequencia
ordenada de elementos, no sentido da sua posição relativa:
𝐸1 , 𝐸2 , . . . , 𝐸𝑛
Tal que:
1. Existem 𝑛 elementos na sequência;
2. 𝐸1 é o primeiro elemento da sequência;
3. 𝐸𝑛 é o ultimo elemento da sequência;
4. Para todo i, j entre 1 e n, se i<j, então o elemento 𝐸𝑖 , antecede o elemento 𝐸𝑗 ;
5. Caso i=j-1, 𝐸𝑖 é o antecessor de 𝐸𝑗 e 𝐸𝑗 é o sucessor de 𝐸𝑖 .
Operação que permite utilizar cada um dos elementos de uma lista linear, de tal forma que:
Operação que procura um elemento especifico da lista linear. A busca pode ser efetuada de duas
formas:
Operação que incorpora um elemento X a uma lista linear de tal forma que:
○ A inserção é realizada de tal forma que ao inserir o elemento X na posição i, onde i está no
intervalo de 1 a (n+1), esse elemento passa a ser o i-ésimo elemento da lista linear;
Operação que retira um elemento X de uma lista linear de tal forma que:
○ Se 𝐸𝑖 é o elemento retirado, o seu sucessor passa a ser o sucessor de seu antecessor, ou seja,
𝐸𝑖 + 1 passa a ser o sucessor de 𝐸𝑖 +1. Se 𝐸𝑖 é o primeiro elemento, o seu sucessor passa a
ser o primeiro; se 𝐸𝑖 é o ultimo elemento, o seu antecessor passa a ser o ultimo;
● Phila: Uma Pilha, “Stack” é uma lista linear onde as operações de inserção e
retirada são efetuadas apenas no final da lista linear, ou seja:
● Pilha: Uma Pilha, “Stack” é uma lista linear onde as operações de inserção e
retirada são efetuadas apenas no final da lista linear, ou seja:
Exemplo:
Em uma rua sem saída, tão estreita que apenas um carro passa por vez, o
primeiro carro a sair será o ultimo a ter entrado. Observe ainda que podemos
retirar qualquer carro e não podemos inserir um carro de tal forma que ele não
seja o ultimo.
Filas
Uma fila “queue”, é uma lista linear onde as operações de inserção são efetuadas
apenas no final e as de retirada, apenas no inicio da lista linear, ou seja:
● A inserção de um elemento X torna-o o último da lista linear;
● A retirada é sempre efetuada sobre o elemento 𝐸1 .
Exemplo: Uma fila de banco, onde os clientes que chegam ficam ao final da fila os
que saem, o fazem do inicio da fila
Deque
Um deque, “double-ended queue” é uma lista linear onde as operações de
inserção e retirada podem ser efetuadas tanto no inicio quanto no final da lista
linear, ou seja :
● A inserção de um elemento X pode torná-lo ou o primeiro ou o ultimo da lista
linear;
● A retirada é sempre efetuada sobre o elemento 𝐸1 ou 𝐸𝑛
Exemplos:
● Para montar a composição de um trem, vagões são inseridos e retirados
sempre nas extremidades.
● Em uma barca para transporte de automóveis, estes podem entrar e sair por
qualquer uma das extremidades.
Representação Física
Existem duas formas de implementação:
● Alocação sequencial, onde usamos estruturas estáticas;
● Alocação encadeada, onde usamos ponteiros para identificar as sequencias de
elementos da lista linear.
Tamanho do nó
(TamNo)
● A posição que indica o primeiro nó do vetor que pode ser utilizado pela lista
(IndIniLst);
● A posição que indica o ultimo nó do vetor que pode ser utilizado pela lista
(IndFimLst)
Representação Física
Ptrini PtrFim
X X X
IndIni IndFim
IndIniLst IndFimLst
A * B = Multi( A, B) = i =1 A = i =1 A + A
B B −1
Exercício 2: Recursividade
Combine os dígitos de dois números, os números têm os mesmos dígitos
Exercício 3: Recursividade
Encontre a soma dos primeiros N números pares.